Source Code
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;

using namespace __gnu_pbds;


using ll = long long;
using ull = unsigned long long;
using ld = long double;

template<class __set_element_type>
using gnu_set= tree<__set_element_type, null_type,less<__set_element_type>, rb_tree_tag,tree_order_statistics_node_update>;
template<class __key_type, class __val_type>
using gnu_map = tree<__key_type, __val_type,less<__key_type>, rb_tree_tag,tree_order_statistics_node_update>;

#define ios ios::sync_with_stdio(0); cin.tie(0)


const ll oo = 1e18;
const ll MOD = 1e9 + 7;

int n;

int main() {
    ios;
    cin >> n;
    set<string> names;
    map<string, int> mp; 

    while(n--) {
        string name;
        cin >> name;
        if(!(names.find(name) != names.end())) {
            mp[name] = 1;
            names.insert(name);
            cout << "ok\n";
        } else {
            int &suffix = mp[name];
            if(suffix == 0)
                suffix++;
            while(names.find(name + to_string(suffix)) != names.end())
                suffix++;
            name += to_string(suffix);
            suffix++;
            names.insert(name);
            cout << name << '\n';
        }
    }
    
}
Copy
Registration System Ammar Abu Yaman
GNU G++17
558 ms
14.6 MB
Accepted