Qiuqiqiu  
不管道路多么崎岖坎坷,我永远不停下追逐梦想的脚步!

http://acm.hdu.edu.cn/showproblem.php?pid=2648

我的代码
 1 #include <cstdio>
2 #include <cstring>
3 #include <cstdlib>
4 struct shop
5 {
6 char name[50];
7 int p;
8 }a[10010];
9 const char like[]="memory";
10 int n;
11 int cmp1(const void *a,const void *b)
12 {
13 return strcmp(((shop*)a)->name,((shop*)b)->name);
14 }
15 int cmp2(const void *a,const void *b)
16 {
17 return ((shop*)b)->p - ((shop*)a)->p;
18 }
19 int find(char *s)
20 {
21 int l=1,r=n,m;
22 while (l<r)
23 {
24 m=l+(r-l)/2;
25 if (strcmp(s,a[m].name)<=0) r=m;
26 else l=m+1;
27 }
28 return l;
29 }
30 int main()
31 {
32 int i,m,p,j;
33 char name[50];
34 while (scanf("%d",&n)!=EOF)
35 {
36 memset(a,0,sizeof(a));
37 for (i=1;i<=n;i++) scanf("%s",a[i].name);
38 scanf("%d",&m);
39 while (m--)
40 {
41 qsort(a+1,n,sizeof(a[0]),cmp1);
42 for (i=1;i<=n;i++)
43 {
44 scanf("%d%s",&p,name);
45 a[find(name)].p+=p;
46 }
47 qsort(a+1,n,sizeof(a[0]),cmp2);
48 for (i=1;i<=n;i++)
49 if (strcmp(like,a[i].name)==0)
50 {
51 j=i;
52 while (j>0 && a[j].p==a[i].p) j--;
53 printf("%d\n",j+1);
54 break;
55 }
56 }
57 }
58 }

 

posted on 2011-12-10 15:13  Qiuqiqiu  阅读(276)  评论(0编辑  收藏  举报