Cod sursa(job #2168294)

Utilizator amarghescuAnton Marghescu amarghescu Data 14 martie 2018 10:19:44
Problema Nums Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<cstdio>
#include<map>
#include<vector>
#include<cctype>
#include<algorithm>
using namespace std;
struct cmp{
bool operator () (const vector<int> &a,const vector<int> &b) const{
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;}
};
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;}
map<vector<int>,bool,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,ch,ok,k,j;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&tip);
if (tip==1){
aux.clear();
aux.push_back(0);
scanf(" ");
ch=getchar();
do{
aux.push_back(ch-48);
aux[0]++;
ch=getchar();
}while(isdigit(ch));
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;}