不使用sort排序的话
就可以统计超过自己的个数
与总个数的一半比较
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct node {
int x;
char s[10];
} a[120];
int main() {
int n;
while(scanf("%d",&n),n!=-1) {
for(int i=0; i<n; i++) {
scanf("%d %s",&a[i].x,&a[i].s);
}
int cnt[5]= {0};
for(int i=4; i>0; i--) {
for(int j=0; j<n; j++) {
if(a[j].x==i)
cnt[i]++;
}
}
for(int i=0; i<n; i++) {
if(a[i].x==5)
printf("100
");
else if(a[i].x==0)
printf("50
");
else {
int t=0;
for(int j=0; j<n; j++) {
if(a[j].x==a[i].x&&strcmp(a[j].s,a[i].s)<0)
t++;
}
if(t>=cnt[a[i].x]/2)
printf("%d
",100-(5-a[i].x)*10);
else
printf("%d
",100-(5-a[i].x)*10+5);
}
}
printf("
");
}
return 0;
}