Problem 1005

Problem 1005
Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 65  Solved: 4
[Submit][Status][Web Board]
Description
“Point, point, life of student!” This is a ballad(歌谣)well known in colleges, and you must care about your score in this exam too. How many points can you get? Now, I told you the rules which are used in this course. There are 5 problems in this final exam. And I will give you 100 points if you can solve all 5 problems; of course, it is fairly difficulty for many of you. If you can solve 4 problems, you can also get a high score 95 or 90 (you can get the former(前者) only when your rank is in the first half of all students who solve 4 problems). Analogically(以此类推), you can get 85、80、75、70、65、60. But you will not pass this exam if you solve nothing problem, and I will mark your score with 50. Note, only 1 student will get the score 95 when 3 students have solved 4 problems. I wish you all can pass the exam! Come on! 
Input
Input contains multiple test cases. Each test case contains an integer N (1<=N<=100, the number of students) in a line first, and then N lines follow. Each line contains P (0<=P<=5 number of problems that have been solved) and T(consumed time). You can assume that all data are different when 0
Output
Output the scores of N students in N lines for each case, and there is a blank line after each case.
Sample Input
4
5 06:30:17
4 07:31:27
4 08:12:12
4 05:23:13
1
5 06:30:17
-1


Sample Output
100
90
90
95


100


标程:

#include <iostream> 
#include <cstdio> 
#include <cstdlib> 
#include <algorithm> 
  
using namespace std; 
  
struct gong{ 
    int n; 
    int time; 
    int socres; 
    int code; 
    int m; 
}; 
  
int compare(const void *a,const void *b) 

    struct gong *aa = (gong *)a; 
    struct gong *bb = (gong *) b; 
    if(aa->n!=bb->n) return bb->n - aa->n; 
    else return aa->time - bb->time; 

int recompare(const void *a,const void *b) 

    struct gong *aa = (gong *) a; 
    struct gong *bb = (gong *) b; 
    return aa->code - bb->code; 

int main() 
{  
    int test; 
    while(cin>>test) 
    {     
        if(test<0) break; 
        gong obj[102]; 
        for(int i=0;i<test;i++) 
        { 
            int n; 
            cin>>n; 
            int a,b,c; 
            scanf("%d:%d:%d",&a,&b,&c); 
            a = a*3600+b*60+c; 
            obj[i].code=i;obj[i].n=n; 
            obj[i].time=a; 
        } 
        qsort(obj,test,sizeof(obj[0]),compare); 
        obj[0].m=1; 
        int a4=0,a3=0,a2=0,a1=0; 
        for(int i=0;i<test;i++) 
        { 
            if(i!=0) 
            { 
                if(obj[i].n!=obj[i-1].n)obj[i].m=1;  
                else obj[i].m=obj[i-1].m+1; 
            } 
            switch(obj[i].n) 
            { 
                case 4:a4++;break; 
                case 3:a3++;break; 
                case 2:a2++;break; 
                case 1:a1++;break; 
                default:; 
            } 
        } 
        for(int i=0;i<test;i++) 
        { 
            switch(obj[i].n) 
            { 
                case 5:obj[i].socres=100;break; 
                case 4:if(obj[i].m<=a4/2||a4==1) obj[i].socres=95; 
                        else obj[i].socres=90;break; 
                case 3:if(obj[i].m<=a3/2||a3==1) obj[i].socres=85; 
                        else obj[i].socres=80;break; 
                case 2:if(obj[i].m<=a2/2||a2==1) obj[i].socres=75; 
                        else obj[i].socres=70;break; 
                case 1:if(obj[i].m<=a1/2||a1==1) obj[i].socres=65; 
                        else obj[i].socres=60;break; 
                case 0:obj[i].socres=50; 
            } 
        } 
        qsort(obj,test,sizeof(obj[0]),recompare); 
        for(int i=0;i<test;i++) 
            cout<<obj[i].socres<<endl; 
        cout << endl; 
    } 
    return 0; 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值