What Is Your Grade?

What Is Your Grade?(结构体+(sort))
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

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<p. 
A test case starting with a negative integer terminates the input and this test case should not to be processed. 
 

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<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
struct node{
    int s;
    char t[20];
    int sco;
    int i;
}a[111];
bool cmp(node a,node b){
    if(a.s!=b.s)
        return a.s>b.s;
    else 
        return strcmp(a.t,b.t)<0;
}
bool cmp1(node a,node b){
    return a.i<b.i;
}
int N;
int main(){
    while(scanf("%d", &N) == 1 && N > 0){
        int c[6]={0};
        for(int i=0;i<N;i++){
            scanf("%d %s",&a[i].s,a[i].t);
            a[i].i=i;//记录出现次序
            c[a[i].s]++;
        }
        sort(a,a+N,cmp);
        for(int i=1;i<5;i++){
            if(c[i]==1)
                continue;
            c[i]/=2;
        }
        for(int i=0;i<N;i++){
            if(a[i].s==5)
                a[i].sco=100;
            else if(a[i].s==0)
                a[i].sco=50;
            else{
                int k=1;
                int l=a[i].s;
                while(a[i].s==l&&i<N){ 
                    if(k<=c[l])
                        a[i].sco=100-(5-l)*10+5;
                    else
                        a[i].sco=100-(5-l)*10;
                    k++;i++;
                }
                i--;
            }
        }//算出每个人应该得到的分数
        sort(a,a+N,cmp1);
        for(int i=0;i<N;i++)
            printf("%d\n",a[i].sco);
        printf("\n");
    }
    return 0;
}



class Question: def __init__(self, stem, options, answer): self.stem = stem self.options = options self.answer = answerclass QuestionBank: def __init__(self): self.questions = [] def add_question(self, question): self.questions.append(question) def remove_question(self, question): self.questions.remove(question) def get_random_questions(self, num): return random.sample(self.questions, num)class Paper: def __init__(self, questions): self.questions = questions self.answers = {} def answer_question(self, question, answer): self.answers[question] = answer def get_score(self): score = 0 for question, answer in self.answers.items(): if answer == question.answer: score += 1 return scoreclass Grader: def __init__(self, paper): self.paper = paper def grade(self): return self.paper.get_score()# Example usagequestion1 = Question("What is the capital of France?", ["Paris", "London", "Berlin", "Madrid"], "Paris")question2 = Question("What is the largest planet in the solar system?", ["Mercury", "Venus", "Earth", "Jupiter"], "Jupiter")question3 = Question("What is the highest mountain in the world?", ["K2", "Mount Everest", "Makalu", "Cho Oyu"], "Mount Everest")question_bank = QuestionBank()question_bank.add_question(question1)question_bank.add_question(question2)question_bank.add_question(question3)paper = Paper(question_bank.get_random_questions(2))paper.answer_question(question1, "Paris")paper.answer_question(question2, "Jupiter")grader = Grader(paper)score = grader.grade()print("Your score is:", score)将这个代码转为C++的
05-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值