hdu 1084 What Is Your Grade?

题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1084

题意:根据做题数目和时间输出分数

代码

#include<bits/stdc++.h>

using namespace std;
int count1[100];

int ys(int num)
{
    int sroce;
    if(num==5)  sroce=100;
    else if(num==4)  sroce=90;
    else if(num==3)  sroce=80;
    else if(num==2)  sroce=70;
    else if(num==1)  sroce=60;
    else if(num==0)  sroce=50;
    return sroce;
}
struct p
{
    int num;
    char s[100];
    int sro;
}P[105],Q[105];



bool cmp(p X,p Y)
{
    if(X.num==Y.num) 
    {
        if(strcmp(X.s,Y.s)==-1)  return 1;
        else return 0;
    } 
    return X.num>Y.num;
}
int main()
{
    int t;
    while(1)
    {
        memset(count1,0,sizeof(count1));
        cin>>t;
        if(t==-1)  break;
        for(int i=0;i<t;i++)
        {
            cin>>P[i].num>>P[i].s;
            Q[i].num=P[i].num;
            strcpy(Q[i].s,P[i].s);
            count1[P[i].num]++;
        }
        sort(P,P+t,cmp);
        for(int i=0;i<t;i++)
        {
            if(P[i].num==5)
            {
                P[i].sro=100;
                continue;
            } 
            if(P[i].num==0)
            {
                P[i].sro=50;
                continue;
            } 
            for(int j=1;j<=count1[P[i].num]/2;j++)
               P[i+j-1].sro=ys(P[i].num)+5;
            for(int j=count1[P[i].num]/2+1;j<=count1[P[i].num];j++)
               P[i+j-1].sro=ys(P[i].num);
            i=i+count1[P[i].num]-1;
        }
        for(int i=0;i<t;i++)
        {
            for(int j=0;j<t;j++)
            {
                if((Q[i].num==P[j].num)&&(strcmp(Q[i].s,P[j].s)==0))
                {
                    cout<<P[j].sro<<endl;
                    break;
                }
            } 
        }
        cout<<endl;
        
    }
    
    return 0;
}
原文地址:https://www.cnblogs.com/gaoss/p/5393246.html