ZOJ-3770

来源:互联网 发布:淘宝如何设置降价提醒 编辑:程序博客网 时间:2024/05/13 17:32

一般模拟题,读懂题目规则就好搞,细心点就行了

#include<stdio.h>#include<time.h>#include<stdlib.h>#include<math.h>struct Member{int index;int ID;time_t date;int score;int LV;};static int cmp(const void *p1, const void *p2){struct Member *m1 = (struct Member *) p1;struct Member *m2 = (struct Member *) p2;if (m1->score != m2->score)return m2->score - m1->score;else if (m1->date != m2->date)return m1->date - m2->date;elsereturn m1->ID - m2->ID;}int main(){int t, n, level[2000];scanf("%d", &t);while (t--){scanf("%d", &n);struct Member *array = malloc(n * sizeof(struct Member));int i, j, id, score, total = 0;char time[11];struct tm date;for (i = 0; i < n; i++){scanf("%d %s %d", &id, time, &score);strptime(time, "%Y/%m/%d", &date);array[i].index = i;array[i].ID = id;array[i].date = mktime(&date);array[i].score = score;if (score){total++;array[i].LV = 2;}elsearray[i].LV = 1;}qsort(array, n, sizeof(struct Member), cmp);int index = 0, lvs[4];lvs[0] = (int) (total * 0.03);lvs[1] = (int) (total * 0.07);lvs[2] = (int) (total * 0.2);lvs[3] = (int) (total * 0.3);for (i = 0; i < 4; i++)for (j = 0; j < lvs[i]; j++)array[index++].LV = 6 - i;for (i = 0; i < n; i++)level[array[i].index] = array[i].LV;for (i = 0; i < n; i++)printf("LV%d\n", level[i]);free(array);}return 0;}


0 0
原创粉丝点击