比赛 |
20120720 |
评测结果 |
AAATTTTTTT |
题目名称 |
忠诚点数榜 |
最终得分 |
30 |
用户昵称 |
苏轼 |
运行时间 |
1.416 s |
代码语言 |
C++ |
内存使用 |
3.17 MiB |
提交时间 |
2012-07-20 11:24:00 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
int number;
struct hehe
{
string s;
int fen;
int jin;
}w[250000];
int sc=0;
int cmp(const void *a,const void *b)
{
struct hehe *c=(struct hehe *)a;
struct hehe *d=(struct hehe *)b;
if(c->fen != d->fen) return d->fen - c->fen;
else if (c->fen == d-> fen) return c-> jin - d->jin;
}
int main()
{
freopen ("lp.in","r",stdin);
freopen ("lp.out","w",stdout);
scanf("%d\n",&number);
for (int p=0;p<number;p++)
{
int lq;
char q[100];
gets(q);
lq=strlen(q);
if (q[0]=='+')
{
string str;
int i=1;
while (q[i]!=' ')
{
str+=q[i];
i++;
}
int o=-1;
for (int i=0;i<sc;i++)
{
if (w[i].s==str)
{
o=i;
break;
}
}
i++;
int num=0;
while (i<lq)
{
num*=10;
num+=q[i]-'0';
i++;
}
if (o==-1)
{
w[sc].s=str;
w[sc].fen=num;
w[sc].jin=sc;
sc++;
}
else
{
w[o].fen=num;
}
continue;
}
if (q[0]=='?'&&q[1]>='0'&&q[1]<='9')
{
int num=0;
int i=1;
while (i<lq)
{
num*=10;
num+=q[i]-'0';
i++;
}
qsort(w,sc,sizeof(w[0]),cmp);
for (i=num-1;i<num+9&&i<sc;i++)
{
cout<<w[i].s<<' ';
}
cout<<endl;
}
else
{
string str;
int i=1;
while (q[i]!=' '&&i<lq)
{
str+=q[i];
i++;
}
qsort(w,sc,sizeof(w[0]),cmp);
for (int i=0;i<sc;i++)
{
if (w[i].s==str)
{
cout<<i+1<<endl;
break;
}
}
}
}
return 0;
}