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