702人阅读 评论(0)

# 5-41 PAT排名汇总 (25分)

2
5
1234567890001 95
1234567890005 100
1234567890003 95
1234567890002 77
1234567890004 85
4
1234567890013 65
1234567890011 25
1234567890014 100
1234567890012 85

9
1234567890005 1 1 1
1234567890014 1 2 1
1234567890001 3 1 2
1234567890003 3 1 2
1234567890004 5 1 4
1234567890012 5 2 2
1234567890002 7 1 5
1234567890013 8 2 3
1234567890011 9 2 4

#include <stdio.h>
#include<stdlib.h>
#include<string.h>
/* 评测结果 时间  结果  得分  题目  编译器     用时（ms）  内存（MB）  用户
2016-08-30 12:10    答案正确    25  5-41    gcc     41  3   569985011

typedef struct node *Node;
struct node {
char identifier[14];//考号，第二顺位排序依据
int score;//分数，第一顺位排序依据
int kaodian;//隶属考点
int Sort_kaodian;//考点内排名
int Sort_ToTle;
}*Students[30001];

int comp(const void*a,const void*b) {
Node x=*(Node*)a;
Node y=*(Node*)b;
//  printf("[x%s-%d]",x->identifier,x->score);
//  printf("[y%s-%d]",y->identifier,y->score);
if(x->score!=y->score) {
return y->score-x->score;
} else {

return strcmp(x->identifier,y->identifier);
}

}

int main() {
int n;//<=100
scanf("%d",&n);
int left=0;
int sum=0;
for(int i=0; i<n; i++) {
int m;//<=300
scanf("%d",&m);
left=sum;
for(int j=0; j<m; j++) {
Students[sum]=(Node)malloc(sizeof(struct node));
scanf("%s%d",&Students[sum]->identifier,&Students[sum]->score);
Students[sum++]->kaodian=i+1;
//          printf("\n{%s-%d}",Students[sum-1]->identifier,Students[sum-1]->score);
}
qsort(&Students[left],m,sizeof(Node),comp);
Students[left]->Sort_kaodian=1;
for(int j=left+1; j<sum; j++) {
if(Students[j]->score==Students[j-1]->score)Students[j]->Sort_kaodian=Students[j-1]->Sort_kaodian;
else Students[j]->Sort_kaodian=j-left+1;
}
}
printf("%d\n",sum);
qsort(Students,sum,sizeof(Node),comp);
Students[0]->Sort_ToTle=1;

for(int i=0; i<sum; i++) {
printf("%s",Students[i]->identifier);
//      printf(" %d",Students[i]->score);
if(i) {
if(Students[i]->score!=Students[i-1]->score) {
Students[i]->Sort_ToTle=i+1;
} else {
Students[i]->Sort_ToTle=Students[i-1]->Sort_ToTle ;
}
}
printf(" %d",Students[i]->Sort_ToTle );
printf(" %d",Students[i]->kaodian);
printf(" %d\n",Students[i]->Sort_kaodian);
}

return 0;
}


0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
文章分类
评论排行
最新评论