Pagini recente » Cod sursa (job #1926004) | Cod sursa (job #1341132) | Cod sursa (job #654339) | Cod sursa (job #2568533) | Cod sursa (job #2221964)
#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';
}
}