| ||||||||||
| 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 | |||||||||
怪了怪了,今天还WA,没发现和Achilles的程序有太大出入啊!In Reply To:晕,为什么每次做这种题都会WA? Posted by:Sempr at 2006-04-24 13:07:03 > #include <stdio.h>
> #include <string.h>
> #include <algorithm>
> #include <math.h>
> using namespace std;
>
> typedef struct
> {
> char name[20];
> int solved;
> int tottime;
> int avetime;
> int time[7];
> int rank;
> } Node;
>
> Node nd[30];
>
> bool cp(Node a, Node b)
> {
> if (a.solved != b.solved)
> {
> return a.solved > b.solved;
> }
> else if (a.tottime != b.tottime)
> {
> return a.time < b.time;
> }
> else if (a.avetime != b.avetime)
> {
> return a.avetime < b.avetime;
> }
> else
> {
> return strcmp(a.name, b.name) < 0;
> }
> }
>
> bool Same(Node a, Node b)
> {
> return a.solved == b.solved && a.tottime == b.tottime
> && a.avetime == b.avetime;
> }
>
> void Solve(int N, int T)
> {
> int i, j;
> double tmp;
> memset(nd, 0, sizeof(nd));
> for (i = 0; i < N; i++)
> {
> scanf("%s", nd[i].name);
> nd[i].tottime = 0;
> nd[i].solved = 0;
> tmp = 0;
> for (j = 0; j < 7; j++)
> {
> scanf("%d", &nd[i].time[j]);
> if (nd[i].time[j])
> {
> nd[i].solved++;
> nd[i].tottime += nd[i].time[j];
> tmp += log(nd[i].time[j]);
> }
> }
> if (nd[i].solved)
> {
> tmp = tmp / nd[i].solved;
> tmp = exp(tmp);
> nd[i].avetime = (int)(tmp + 0.5);
> }
> }
> sort(nd, nd + N, cp);
> nd[0].rank = 1;
> for (i = 1; i < N; i++)
> {
> if (Same(nd[i], nd[i - 1]))
> {
> nd[i].rank = nd[i - 1].rank;
> }
> else
> {
> nd[i].rank = i + 1;
> }
> }
> printf("CONTEST %d\n", T);
> for (i = 0; i < N; i++)
> {
> printf("%02d %-11s%d%5d%4d%4d%4d%4d%4d%4d%4d%4d\n",
> nd[i].rank, nd[i].name, nd[i].solved, nd[i].tottime, nd[i].avetime,
> nd[i].time[0], nd[i].time[1], nd[i].time[2], nd[i].time[3],
> nd[i].time[4], nd[i].time[5], nd[i].time[6]);
> }
> }
>
> int main()
> {
> int N, T;
> T = 0;
> // freopen("PKU1245.in", "r", stdin);
> // freopen("PKU1245.o", "w", stdout);
> while (scanf("%d", &N) != -1 && N)
> {
> Solve(N, ++T);
> }
> return 0;
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator