您的位置:首页 > 其它

7-21 PAT排名汇总

2017-10-25 00:58 555 查看


计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学的评价计算机程序设计人才,为企业选拔人才提供参考标准(网址http://www.patest.cn)。

每次考试会在若干个不同的考点同时举行,每个考点用局域网,产生本考点的成绩。考试结束后,各个考点的成绩将即刻汇总成一张总的排名表。
现在就请你写一个程序自动归并各个考点的成绩并生成总排名表。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int maxn = 1e5;
struct Data {
ll id;
int score, ran, fran, code;
bool operator < (const Data &d) const {
if (score != d.score) return score > d.score;
return id < d.id;
}
}data[maxn];
int main() {
int n, sum = 0, pos = 0; scanf("%d", &n);
for (int i = 1; i <= n; i++) {
int k; scanf("%d", &k);
sum += k;
int spos = pos;
for (int j = 1; j <= k; j++) {
++pos;
scanf("%lld %d", &data[pos].id, &data[pos].score);
data[pos].code = i;
}
sort(data + spos + 1, data + pos + 1);
int cnt = 1;
data[spos + 1].ran = cnt;
for (int j = spos + 2; j <= pos; j++) {
++cnt;
if (data[j].score == data[j - 1].score) data[j].ran = data[j - 1].ran;
else data[j].ran = cnt;
}
}
sort(data + 1, data + pos + 1);
int cnt = 1;
data[1].fran = cnt;
for (int i = 2; i <= pos; i++) {
++cnt;
if (data[i].score == data[i - 1].score) data[i].fran = data[i - 1].fran;
else data[i].fran = cnt;
}
printf("%d\n", sum);
for (int i = 1; i <= sum; i++) {
printf("%013lld %d %d %d\n", data[i].id, data[i].fran, data[i].code, data[i].ran);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: