Cod sursa(job #2221964)

Utilizator patcasrarespatcas rares danut patcasrares Data 16 iulie 2018 11:30:34
Problema Nums Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include<fstream>
#include<iostream>
#include<algorithm>
#include<cstring>
#define DN 100005
#include<deque>
#define x first
#define y second
using namespace std;
ifstream fin("nums.in");
ofstream fout("nums.out");
int n,nr,r[DN],st,dr,mij;
string b;
pair<int,int>q[DN];
pair<int,pair<string,int> >s[DN];
deque<int>d;
void inserare(int a)
{
    if(d.empty())
    {
        d.push_back(a);
        return;
    }
    if(d.back()<a)
    {
        d.push_back(a);
        return;
    }
    st=0;
    dr=d.size()-1;
    while(st<dr)
    {
        mij=(st+dr)/2;
        if(d[mij]>a)
            dr=mij;
        else
            st=mij+1;
    }
    d.insert(d.begin()+st,a);
}
int main()
{
    fin>>n;
    for(int h=1;h<=n;h++)
    {
        fin>>q[h].x;
        if(q[h].x==1)
        {
            nr++;
            fin>>b;
            s[nr]={b.size(),{b,h}};
            continue;
        }
        fin>>q[h].y;
    }
    sort(s+1,s+nr+1);
    for(int i=1;i<=nr;i++)
        if(s[i].y.x!=s[i-1].y.x)
            r[s[i].y.y]=i;
    for(int i=1;i<=n;i++)
    {
        if(q[i].x==1)
        {
            if(r[i])
                inserare(r[i]);
            continue;
        }
        fout<<s[d[q[i].y-1]].y.x<<'\n';
    }
}