HDU 2093 水题,就是注意一下细节,有个结构体的排序,重载运算符小于

注意细节,就是名字是左对齐,其余两项是右对齐,然后名字和题目数中间有一个空格,题目数和时间之间有一个空格。

做了一两个小时,弱暴了`````

不过也有点收获,看到了以前学C时没有怎么注意到的,有个头文件叫ctype.h,里面有函数isalpha(c),isdigit(c)各种处理字符的函数,以前看到过,很久不用就忘了,还是得学了多用才行。。。不过自己写一下也没什么太大的关系````

还有就是左对齐得加个“ - ” ,也忘了````

贴代码:

View Code
 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 using namespace std;
 5 #define MAXN 1000
 6 int n,m;
 7 int cur;
 8 struct person
 9 {
10     char name[11];
11     int num;
12     int score;
13     bool operator <(const person & o)const
14     {
15         if(num > o.num) return true;
16         else if(num < o.num) return false;
17         else if(score < o.score) return true;
18         else if(score > o.score) return false;
19         else if(strcmp(name,o.name) < 0) return true;
20         else return false;
21     }
22 } p[MAXN];
23 int main()
24 {
25 //    freopen("in.cpp","r",stdin);
26     for(int i=0; i<MAXN; ++i)
27         p[i].num = 0;
28     cur = -1;
29     scanf("%d%d",&n,&m);
30     while(scanf("%s",p[++cur].name) != EOF)
31     {
32         for(int i=0; i<n; ++i)
33         {
34             int y,z;
35             scanf("%d",&y);
36             if(y > 0)
37             {
38                 char c = getchar();
39                 if(c == '(')
40                 {
41                     scanf("%d)",&z);
42                     y += z*m;
43                 }
44                 p[cur].score += y;
45                 ++p[cur].num;
46             }
47         }
48     }
49     sort(p,p+cur);
50     for(int i=0; i<cur; ++i)
51     {
52         printf("%-10s %2d %4d\n",p[i].name,p[i].num,p[i].score);
53     }
54     return 0;
55 }

 

posted on 2013-04-25 00:55  allh123  阅读(418)  评论(0编辑  收藏  举报

导航