本文主要是介绍浙大PAT 1062题 1062. Talent and Virtue,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Person{
char id[10];
int virtue;
int talent;
}person;
//数组较大,开在main函数里面会出错;
person ps[100005];
person p1[100005];
person p2[100005];
person p3[100005];
person p4[100005];
int cmp(const void *atmp,const void *btmp){
person *a=(person *)atmp;
person *b=(person *)btmp;
if(a->virtue+a->talent!=b->virtue+b->talent){
return a->virtue+a->talent<b->virtue+b->talent;
}
else if(a->virtue!=b->virtue){
return a->virtue<b->virtue;
}
else{
return strcmp(a->id,b->id);
}
return 0;
}
int main(){
int i,j;
int n,l,h;
int cnt1,cnt2,cnt3,cnt4;
scanf("%d %d %d",&n,&l,&h);
cnt1=cnt2=cnt3=cnt4=0;
for(i=0;i<n;i++){
scanf("%s %d %d",&ps[i].id,&ps[i].virtue,&ps[i].talent);
if(ps[i].virtue<l||ps[i].talent<l){
continue;
}
else if(ps[i].virtue>=h&&ps[i].talent>=h){
p1[cnt1]=ps[i];
cnt1++;
}
else if(ps[i].virtue>=h&&ps[i].talent<h){
p2[cnt2]=ps[i];
cnt2++;
}
else if(ps[i].virtue<h&&ps[i].talent<h&&ps[i].virtue>=ps[i].talent){
p3[cnt3]=ps[i];
cnt3++;
}
else {
p4[cnt4]=ps[i];
cnt4++;
}
}
qsort(p1,cnt1,sizeof(person),cmp);
qsort(p2,cnt2,sizeof(person),cmp);
qsort(p3,cnt3,sizeof(person),cmp);
qsort(p4,cnt4,sizeof(person),cmp);
printf("%d\n",cnt1+cnt2+cnt3+cnt4);
for(i=0;i<cnt1;i++){
printf("%s %d %d\n",p1[i].id,p1[i].virtue,p1[i].talent);
}
for(i=0;i<cnt2;i++){
printf("%s %d %d\n",p2[i].id,p2[i].virtue,p2[i].talent);
}
for(i=0;i<cnt3;i++){
printf("%s %d %d\n",p3[i].id,p3[i].virtue,p3[i].talent);
}
for(i=0;i<cnt4;i++){
printf("%s %d %d\n",p4[i].id,p4[i].virtue,p4[i].talent);
}
system("pause");
return 0;
}
这篇关于浙大PAT 1062题 1062. Talent and Virtue的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!