34C - Page Numbers - CodeForces Solution


expression parsing implementation sortings strings *1300

Please click on ads to support us..

Python Code:

s = sorted(list(set(map(int, input().split(',')))))
i = 0
ans = ""
while i < len(s):
    ans += f"{s[i]}"
    beg = i
    while i < len(s) - 1 and s[i] == s[i + 1] - 1:
        i += 1
    if beg == i:
        ans += ","
    else:
        ans += f"-{s[i]},"
    i += 1
ans = ans.strip(',')
print(ans)

C++ Code:

#include <iostream>
#include <vector>

std::vector<int> parseString(std::string s){

    int x(0);
    std::vector<int> nums;
    for(long p = 0; p < s.size(); p++){
        if(s[p] == ','){nums.push_back(x); x = 0;}
        else{x = 10 * x + (s[p] - '0');}
    }
    nums.push_back(x);
    return nums;
}

int main(){

    const long N = 1111;
    std::ios_base::sync_with_stdio(false);
    std::string s; std::cin >> s;
    std::vector<int> nums = parseString(s);
    std::vector<bool> a(N, 0);
    for(long p = 0; p < nums.size(); p++){a[nums[p]] = true;}

    long from(-1), initial(1);
    for(long p = 0; p < N; p++){
        if(!a[p]){
            if(from >= 0){
                long to = p - 1;
                if(!initial){std::cout << ",";}
                initial = false;
                if(from < to){std::cout << from << "-" << to;}
                else{std::cout << from;}
            }
            from = -1;
        }
        else if(a[p] && from < 0){from = p;}
    }

    std::cout << std::endl;

    return 0;
}


Comments

Submit
0 Comments
More Questions

78B - Easter Eggs
1455B - Jumps
1225C - p-binary
1525D - Armchairs
1257A - Two Rival Students
1415A - Prison Break
1271A - Suits
259B - Little Elephant and Magic Square
1389A - LCM Problem
778A - String Game
1382A - Common Subsequence
1512D - Corrupted Array
667B - Coat of Anticubism
284B - Cows and Poker Game
1666D - Deletive Editing
1433D - Districts Connection
2B - The least round way
1324A - Yet Another Tetris Problem
246B - Increase and Decrease
22E - Scheme
1566A - Median Maximization
1278A - Shuffle Hashing
1666F - Fancy Stack
1354A - Alarm Clock
1543B - Customising the Track
1337A - Ichihime and Triangle
1366A - Shovels and Swords
919A - Supermarket
630C - Lucky Numbers
1208B - Uniqueness