比赛 20120720 评测结果 AAATTTTTTT
题目名称 忠诚点数榜 最终得分 30
用户昵称 苏轼 运行时间 1.416 s
代码语言 C++ 内存使用 3.17 MiB
提交时间 2012-07-20 11:24:00
显示代码纯文本
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cstring>
  5. using namespace std;
  6. int number;
  7. struct hehe
  8. {
  9. string s;
  10. int fen;
  11. int jin;
  12. }w[250000];
  13. int sc=0;
  14. int cmp(const void *a,const void *b)
  15. {
  16. struct hehe *c=(struct hehe *)a;
  17. struct hehe *d=(struct hehe *)b;
  18. if(c->fen != d->fen) return d->fen - c->fen;
  19. else if (c->fen == d-> fen) return c-> jin - d->jin;
  20. }
  21.  
  22. int main()
  23. {
  24. freopen ("lp.in","r",stdin);
  25. freopen ("lp.out","w",stdout);
  26. scanf("%d\n",&number);
  27. for (int p=0;p<number;p++)
  28. {
  29. int lq;
  30. char q[100];
  31. gets(q);
  32. lq=strlen(q);
  33. if (q[0]=='+')
  34. {
  35. string str;
  36. int i=1;
  37. while (q[i]!=' ')
  38. {
  39. str+=q[i];
  40. i++;
  41. }
  42. int o=-1;
  43. for (int i=0;i<sc;i++)
  44. {
  45. if (w[i].s==str)
  46. {
  47. o=i;
  48. break;
  49. }
  50. }
  51. i++;
  52. int num=0;
  53. while (i<lq)
  54. {
  55. num*=10;
  56. num+=q[i]-'0';
  57. i++;
  58. }
  59. if (o==-1)
  60. {
  61. w[sc].s=str;
  62. w[sc].fen=num;
  63. w[sc].jin=sc;
  64. sc++;
  65. }
  66. else
  67. {
  68. w[o].fen=num;
  69. }
  70. continue;
  71. }
  72. if (q[0]=='?'&&q[1]>='0'&&q[1]<='9')
  73. {
  74. int num=0;
  75. int i=1;
  76. while (i<lq)
  77. {
  78. num*=10;
  79. num+=q[i]-'0';
  80. i++;
  81. }
  82. qsort(w,sc,sizeof(w[0]),cmp);
  83. for (i=num-1;i<num+9&&i<sc;i++)
  84. {
  85. cout<<w[i].s<<' ';
  86. }
  87. cout<<endl;
  88. }
  89. else
  90. {
  91. string str;
  92. int i=1;
  93. while (q[i]!=' '&&i<lq)
  94. {
  95. str+=q[i];
  96. i++;
  97. }
  98. qsort(w,sc,sizeof(w[0]),cmp);
  99. for (int i=0;i<sc;i++)
  100. {
  101. if (w[i].s==str)
  102. {
  103. cout<<i+1<<endl;
  104. break;
  105. }
  106. }
  107. }
  108. }
  109. return 0;
  110. }