Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:已解决In Reply To:Re:已解决 Posted by:kuaichenyang at 2015-08-04 10:49:51 > 你是怎么解决的,我也是用快排做的,帮我看看呗,大牛 > > Code: > > #include <stdio.h> > #include <stdlib.h> > #include <string.h> > > #define Maxn 10005 > > typedef struct tagStudent > { > char name[35]; > int score; > int index; > }Student; > > Student stu[Maxn],Temp[Maxn]; > int n,m; > > int cmpName(const void *a,const void *b) > { > return strcmp(((Student *)a)->name,((Student *)b)->name); > } > > int cmpSor(const void *a,const void *b) > { > return ((Student *)b)->score-((Student *)a)->score; > } > > int main() > { > int i,pos; > scanf("%d",&n); > getchar(); > for(i=0;i<n;i++) > gets(stu[i].name); > qsort(stu,n,sizeof(stu[0]),cmpName); > for(i=0;i<n;i++) > if(!strcmp(stu[i].name,"Li Ming")) > { > pos=i; > break; > } > scanf("%d",&m); > getchar(); > while(m--) > { > int k=1; > char input[100]; > for(i=0;i<n;i++) > { > char *p=input; > gets(input); > sscanf(input,"%d",&Temp[i].score); > while(p[0]!=' ') > ++p; > while(p[0]==' ') > ++p; > strcpy(Temp[i].name,p); > } > qsort(Temp,n,sizeof(Temp[0]),cmpName); > for(i=0;i<n;i++) > stu[i].score+=Temp[i].score; > qsort(stu,n,sizeof(stu[0]),cmpSor); > for(i=1,stu[0].index=1;i<n;i++) > if(stu[i].score==stu[i-1].score) > stu[i].index=k; > else > stu[i].index=++k; > qsort(stu,n,sizeof(stu[0]),cmpName); > printf("%d\n",stu[pos].index); > } > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator