7-1 PAT排名汇总 (25 分)

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

每次考试会在若干个不同的考点同时举行,每个考点用局域网,产生本考点的成绩。考试结束后,各个考点的成绩将即刻汇总成一张总的排名表。

现在就请你写一个程序自动归并各个考点的成绩并生成总排名表。

输入格式:
输入的第一行给出一个正整数N(≤100),代表考点总数。随后给出N个考点的成绩,格式为:首先一行给出正整数K(≤300),代表该考点的考生总数;随后K行,每行给出1个考生的信息,包括考号(由13位整数字组成)和得分(为[0,100]区间内的整数),中间用空格分隔。

输出格式:
首先在第一行里输出考生总数。随后输出汇总的排名表,每个考生的信息占一行,顺序为:考号、最终排名、考点编号、在该考点的排名。其中考点按输入给出的顺序从1到N编号。考生的输出须按最终排名的非递减顺序输出,获得相同分数的考生应有相同名次,并按考号的递增顺序输出。

输入样例:
2
5
1234567890001 95
1234567890005 100
1234567890003 95
1234567890002 77
1234567890004 85
4
1234567890013 65
1234567890011 25
1234567890014 100
1234567890012 85
输出样例:
9
1234567890005 1 1 1
1234567890014 1 2 1
1234567890001 3 1 2
1234567890003 3 1 2
1234567890004 5 1 4
1234567890012 5 2 2
1234567890002 7 1 5
1234567890013 8 2 3
1234567890011 9 2 4

这题我的思路是用结构体来存放每位考生的考号num,最终排名rank_total、考点编号place、在该考点的排名rank_in_palce;然后用sort对每次给定考点的考生进行排序,再求出每位考生在该考点的排名;最后对全体考生再用一次sort,然后求出每位考生在全体考生中的排名

#include
#include
using namespace std;
struct PTA
{
	int place;
	int score;
	string num;
	int rank_in_palce;
	int rank_total;	
}b[30001];
bool cmp1(PTA x,PTA y)
{
	if(x.score==y.score)
		return x.numy.score;
}
int main()
{
	int N,total=0;
	cin>>N;
	int i=1,j=0,z=0;
	for(i=0;i>Ki;
		for( j=0;j>b[total].num>>b[total].score;
			total++;
		}
		sort(b+z,b+z+Ki,cmp1); /*对每次给定考点的考生按分数从高到低进行排序,
		若分数相同按编号从小到大进行排序; */ 
		int m=1;
		b[z].rank_in_palce=m;//进行 
		m++;
		for(j=z+1;j

你可能感兴趣的:(C,++,pta)