Cod sursa(job #3037971)

Utilizator alexboat10759Alex Mateescu alexboat10759 Data 26 martie 2023 18:38:10
Problema Nums Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <fstream>
#include <vector>
#include <cstring>
#include <map>

using namespace std;

ifstream cin("nums.in");
ofstream cout("nums.out");

vector<string> v;
map<string, bool> mp;

bool cmp(string s1, string s2)
{
    if(s1.size() < s2.size())
        return false;
    else if(s1.size() > s2.size())
        return true;

    for(int i = 0; i < s1.size(); i++)
    {
        if(s1[i] > s2[i])
            return true;
        else if(s1[i] < s2[i])
            return false;
    }

    return false;
}

int main()
{
    int n;
    cin>>n;

    v.push_back("0");

    for(int i = 1; i <= n; i++)
    {
        int c;
        cin>>c;
        if(c == 1)
        {
            string s;
            cin>>s;

            if(mp[s] == true)
                continue;
            mp[s] = true;

            int st = 0, dr = v.size() - 1, mij, poz = 0;
            while(st <= dr)
            {
                mij = (st + dr) / 2;
                if(cmp(s, v[mij]) == true)
                    poz = mij, st = mij + 1;
                else
                    dr = mij - 1;
            }

            v.insert(v.begin() + poz + 1, s);
            /*for(int i = 0; i < v.size(); i++)
                cout<<v[i]<<" ";
            cout<<'\n';*/
        }
        else
        {
            int nr;
            cin>>nr;
            cout<<v[nr]<<'\n';
        }
    }
    return 0;
}