| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:!!!求数据!!!In Reply To:Re:!!!求数据!!! Posted by:maoyoulong at 2011-09-05 10:15:03 是我想太多了,submit是安时间排序好了的!
终于AC了,贴贴代码吧 ^_^
#include<map>
#include<string>
#include<stdlib.h>
#include<iostream>
using namespace std;
struct node
{
char name[20];
bool solve[10];
int wrong[10],sumtime,solved;
};
node team[20];
int cmp(const void *m1,const void *m2)
{
node *team1=(node*)m1;
node *team2=(node*)m2;
if(team1->solved==team2->solved)
{
if(team1->sumtime-team2->sumtime)
return (team1->sumtime>team2->sumtime)?1:-1;
return strcmp(team1->name,team2->name)>0?1:-1;
}
return (team1->solved<team2->solved)?1:-1;
}
int main()
{
//freopen("t.txt", "r", stdin);
//freopen("aa.txt", "w", stdout);
char n[20],yes[5];
int cas,teams,problem,submit,pro,t,rank,i,j;
scanf("%d",&cas);
while(cas--)
{
scanf("%d",&teams);
map<string,int>mp;
for(i=0;i<teams;i++)
{
scanf("%s",team[i].name);
mp[team[i].name]=i;///
memset(team[i].wrong,0,sizeof(team[i].wrong));
memset(team[i].solve,false,sizeof(team[i].solve));
team[i].sumtime=team[i].solved=0;
}
scanf("%d %d",&problem,&submit);
for(i=0;i<submit;i++)
{
scanf("%d%d%s%s",&pro,&t,yes,n);
pro--;
j=mp[n];
if(team[j].solve[pro])
continue;
if(!strcmp(yes,"Yes"))
{
team[j].sumtime+=t+20*team[j].wrong[pro];
team[j].solve[pro]=true;
team[j].solved++;
continue;
}
team[j].wrong[pro]++;
}
qsort(team,teams,sizeof(team[0]),cmp);
rank=1;
for(i=0;i<teams;i++)
{
printf("%2d. %-8s% 2d% 5d\n", rank,
team[i].name,team[i].solved,team[i].sumtime);
if( (team[i+1].solved-team[i].solved) ||
(team[i+1].sumtime-team[i].sumtime) )
rank=i+2;
}
puts("");
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator