Pagini recente » Profil VladStana | Cod sursa (job #1157089) | Cod sursa (job #2106968) | Cod sursa (job #168575) | Cod sursa (job #522038)
Cod sursa(job #522038)
#include <stdio.h>
#include <string.h>
#include <vector>
#include <algorithm>
#define NMax 100005
using namespace std;
const char IN[]="nums.in",OUT[]="nums.out";
int N,V;
char s[NMax];
vector<int> a[NMax];
vector<int> r;
bool cmp(int x,int y)
{
int i;
if (a[x][0]>a[y][0]) return false;
if (a[y][0]>a[x][0]) return true;
for (i=a[x][0];i>0 && a[x][i]==a[y][i];--i);
if (a[x][i]>a[y][i]) return false;
if (a[y][i]>a[x][i]) return true;
return true;
}
void read(char* s)
{
int i,L=strlen(s);
a[V].resize( L+3);
a[V][0]=L;
for (i=1;i<=a[V][0];++i)
a[V][i]= s[ L-i ] - '0';
r.push_back(V);
++V;
}
void Query(int k)
{
nth_element(r.begin(), r.begin()+k-1,r.end(),cmp);
int i,x= r[k-1];
for (i=a[x][0];i>0;--i)
printf("%d",a[x][i]);
printf("\n");
}
int main()
{
int i,c,k;
freopen(IN,"r",stdin);
freopen(OUT,"w",stdout);
scanf("%d",&N);
for (i=0;i<N;++i)
{
scanf("%d",&c);
switch(c)
{
case 1:
scanf("%s",s);
read(s);
break;
case 0:
scanf("%d",&k);
Query(k);
break;
}
}
return 0;
}