杭电2093 考试排名 hduoj

完全按照题目描述写出来就行了,看着可能有些麻烦,其实还好,就是注意一下比较函数和输出格式。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
struct student{
    char name[11];
    int ac;
    int time;
}st[100000];
int cmp(student a, student b)
{
    if(a.ac!=b.ac) return a.ac>b.ac;
    if(a.time!=b.time) return a.time<b.time;
    return strcmp(a.name,b.name)<0?1:0;
}

int main()
{
    int n,m;
    cin>>n>>m;
    int p=0;
    while(cin>>st[p].name)
    {
    st[p].ac=0;
    st[p].time=0;
//    char submit[10];
    for(int i=0;i<n;i++)
    {
        char submit[10];
        cin>>submit;
        if(submit[0]!='-'&&submit[0]!='0')
            {
        st[p].ac++;
        int l=strlen(submit);
        if(submit[l-1]==')')
        {
            int j=l-2;
            int tmp=1;
            while(submit[j]!='(')
            {
            st[p].time+=(submit[j]-'0')*tmp*m;
            tmp*=10;
             j--;
            }
            j--;
            tmp=1;
            while(j>=0)
            {
            st[p].time+=(submit[j]-'0')*tmp;
            tmp*=10;
            j--;
            }
        }
        
        else
        {
         //   cout<<i<<"i"<<endl;
            int tmp=1;
            while(l--)
            {
            
            st[p].time+=(submit[l]-'0')*tmp;
            tmp*=10;
           //     cout<<submit[l];
            }
//                cout<<"time"<<st[i].time<<endl;
        }
        }
    }
    p++;
    }
    sort(st,st+p,cmp);
    for(int i=0;i<p;i++)
    {
    printf("%-10s %2d %4d\n",st[i].name,st[i].ac,st[i].time);
    }
}

猜你喜欢

转载自blog.csdn.net/vinacky/article/details/81778135
今日推荐