【杭电】[1084]What Is Your Grade?

这里写图片描述
这里写图片描述

不使用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\n");
            else if(a[i].x==0)
                printf("50\n");
            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\n",100-(5-a[i].x)*10);
                else
                    printf("%d\n",100-(5-a[i].x)*10+5);
            }
        }
        printf("\n");
    }
    return 0;
}

题目地址:【杭电】[1084]What Is Your Grade?

posted @ 2016-07-18 16:42  BoilTask  阅读(18)  评论(0编辑  收藏  举报