Pagini recente » Cod sursa (job #639195) | Cod sursa (job #3174470) | Cod sursa (job #327872) | Cod sursa (job #2935054) | Cod sursa (job #2168327)
#include<cstdio>
#include<unordered_map>
#include<vector>
#include<cctype>
#include<algorithm>
#include<cstring>
using namespace std;
char ch[100005];
struct cmp{
bool operator () (const vector<int> &a,const vector<int> &b) const{
if (a[0]!=b[0])
return 0;
int i;
for(i=1;i<=a[0];i++)
if (a[i]!=b[i])
return 0;
return 1;}
};
struct mhash{
long long operator () (const vector<int> &a) const{
int i;
long long rez=1;
for(i=1;i<=a[0];i++)
rez=rez*10+a[i];
return rez;}
};
int cmp2(vector<int>a,vector<int>b){
if (a[0]<b[0])
return 1;
if (a[0]>b[0])
return 0;
int i;
for(i=1;i<=a[0];i++)
if (a[i]<b[i])
return 1;
else
if (a[i]>b[i])
return 0;
return 1;}
unordered_map<vector<int>,bool,mhash,cmp>m;
vector<vector<int> >nr;
vector<int>aux;
int main(){
freopen("nums.in","r",stdin);
freopen("nums.out","w",stdout);
int n,i,tip,ok,k,j;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d ",&tip);
if (tip==1){
aux.clear();
aux.push_back(0);
fgets(ch+1,100003,stdin);
aux[0]=strlen(ch+1)-1;
for(j=1;j<=aux[0];j++)
aux.push_back(ch[j]-48);
ok=m.count(aux);
if (ok==0){
m[aux]=1;
nr.push_back(aux);}}
else{
scanf("%d",&k);
nth_element(nr.begin(),nr.begin()+k-1,nr.end(),cmp2);
aux=(*(nr.begin()+k-1));
for(j=1;j<=aux[0];j++)
printf("%d",aux[j]);
printf("\n");}}
return 0;}