HDU 1084(水题)

来源:互联网 发布:js求数组最大值和下标 编辑:程序博客网 时间:2024/06/07 11:30

题意:如题。

 

#include<algorithm>#include<iostream>using namespace std;struct grade{    int no;    int solves;    int h;    int m;    int s;    int score;};bool cmp(grade g1,grade g2){    if(g1.solves==g2.solves && g1.h==g2.h && g1.m==g2.m) return g1.s<g2.s;    if(g1.solves==g2.solves && g1.h==g2.h) return g1.m<g2.m;    if(g1.solves==g2.solves) return g1.h<g2.h;    return g1.solves>g2.solves;}bool cmp2(grade g1,grade g2){    return g1.no<g2.no;}#define N 101grade G[N];grade H[N];int A[6];int K[6];int main(){    int n;    while(scanf("%d",&n) && n!=-1)    {        memset(A,0,sizeof(A));        memset(K,0,sizeof(K));        int i;        for(i=0;i<n;i++)        {            scanf("%d %d:%d:%d",&G[i].solves,&G[i].h,&G[i].m,&G[i].s);            G[i].no=i;            A[G[i].solves]++;        }        sort(G,G+n,cmp);        for(i=0;i<n;i++)        {            if(G[i].solves==5 || G[i].solves==0)            {                G[i].score=50+G[i].solves*10;        //        printf("%d %d %d:%d:%d %d\n",G[i].no,G[i].solves,G[i].h,G[i].m,G[i].s,G[i].score);                continue;            }            int t=50+G[i].solves*10;            if(K[G[i].solves]<A[G[i].solves]/2) t+=5;            K[G[i].solves]++;            G[i].score=t;        //    printf("%d %d %d:%d:%d %d\n",G[i].no,G[i].solves,G[i].h,G[i].m,G[i].s,G[i].score);        }        sort(G,G+n,cmp2);        for(i=0;i<n;i++)        {            printf("%d\n",G[i].score);        }        printf("\n");                }    return 0;}


 

0 0