题目:

思路分析:
结构体实现排序
代码实现:
struct person{
int pai,cj;
char name[20];
}a[20100];
bool cmp(person p1,person p2){
if(p1.cj != p2.cj) return p1.cj > p2.cj;
if(strcmp(p1.name,p2.name)>0) return false;
else return true;
}
int main(){
int n,g,k;
int sum = 0;
scanf("%d%d%d",&n,&g,&k);
for(int i=0;i<n;i++){
scanf("%s %d",&a[i].name,&a[i].cj);
if(a[i].cj >= g && a[i].cj <= 100){
sum += 50;
}else if(a[i].cj >= 60 && a[i].cj < g){
sum += 20;
}
}
sort(a,a+n,cmp);
printf("%d\n", sum);
for(int i=0;i<n;i++){
a[i].pai = i+1;
}
for(int i=0;i<n;i++){
if(a[i].cj == a[i+1].cj){
a[i+1].pai = a[i].pai;
}
}
for(int i=0;i<n;i++){
if(a[i].pai<=k){
cout<<a[i].pai<<" "<<a[i].name<<" "<<a[i].cj<<endl;
}
}
return 0;
}
443



被折叠的 条评论
为什么被折叠?



