7-07. PAT排名汇总(25) (结构体 ZJU_PAT)

题目链接:http://www.patest.cn/contests/ds/7-07

编程能力测试(Programming Ability Test,简称PAT)是浙江大学计算机科学与技术学院主办的专业技术认证考试(网址http://pat.zju.edu.cn/)。每次考试会在若干个不同的考点同时举行,每个考点用局域网,产生本考点的成绩。考试结束后,各个考点的成绩将即刻汇总成一张总的排名表。现在就请你写一个程序自动归并各个考点的成绩并生成总排名表。

输入格式说明:

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

输出格式说明:

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

样例输入与输出:

序号 输入 输出
1
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
2
4
10
4000000000011 100
4000000000008 90
4000000000005 100
4000000000001 90
4000000000003 95
4000000000009 80
4000000000006 90
4000000000007 100
4000000000002 90
4000000000004 90
6
3000000000003 75
3000000000013 85
3000000000007 86
3000000000009 92
3000000000010 98
3000000000020 60
2
2000000000002 98
2000000000003 98
1
1000000000001 100
19
1000000000001 1 4 1
4000000000005 1 1 1
4000000000007 1 1 1
4000000000011 1 1 1
2000000000002 5 3 1
2000000000003 5 3 1
3000000000010 5 2 1
4000000000003 8 1 4
3000000000009 9 2 2
4000000000001 10 1 5
4000000000002 10 1 5
4000000000004 10 1 5
4000000000006 10 1 5
4000000000008 10 1 5
3000000000007 15 2 3
3000000000013 16 2 4
4000000000009 17 1 10
3000000000003 18 2 5
3000000000020 19 2 6
3
1
1
9999999999999 0
1
9999999999999 1 1 1

PS:

就是一道结构体运用的果题!

代码如下:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int maxn = 41700;
struct ss
{
	char num[17];
	int s;
	int rank;//在当前考点的排名
	int mark;//在几号考点
	int flag;//总排名
}stu[maxn];
bool cmp1(ss a, ss b)
{
	if(a.s == b.s)
	{
		return strcmp(a.num, b.num) < 0;
	}
	return a.s > b.s;
}
int main()
{
	int N;
	int k[117];
	int sum = 0;
	scanf("%d",&N);
	{
		int i, j;
		int l = 0, p = 0;
		for(i = 1; i <= N; i++)
		{
			scanf("%d",&k[i]);
			sum += k[i];
			int tt = l;
			for(j = 1; j <= k[i]; j++)
			{
				scanf("%s%d",stu[l].num,&stu[l].s);
				stu[l].mark = i;
				l++;
			}
			sort(stu+tt,stu+l,cmp1);
			p = 2;
			stu[tt].rank = 1;
			for(int h = tt+1; h < l; h++)
			{
				if(stu[h-1].s == stu[h].s)
				{
					stu[h].rank = stu[h-1].rank;
				}
				else
				{
					stu[h].rank = p;
				}
				p++;
			}
		}
		sort(stu,stu+l,cmp1);
		int f = 1;
		int flag = 0;
		printf("%d\n",sum);
		stu[0].flag = 1;
		printf("%s %d %d %d\n",stu[0].num,stu[0].flag,stu[0].mark,stu[0].rank);
		p = 2;
		for(int h = 1; h < l; h++)
		{
			if(stu[h-1].s == stu[h].s)
			{
				stu[h].flag = stu[h-1].flag;
			}
			else
			{
				stu[h].flag = p;
			}
			p++;
		}
		for(i = 1; i < l; i++)
		{
			printf("%s %d ",stu[i].num,stu[i].flag);
			printf("%d %d\n",stu[i].mark,stu[i].rank);
		}
	}
	return 0;
}
时间: 2024-10-08 20:22:09

7-07. PAT排名汇总(25) (结构体 ZJU_PAT)的相关文章

基础实验7-2.4 PAT排名汇总 (25分)

计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学的评价计算机程序设计人才,为企业选拔人才提供参考标准(网址http://www.patest.cn). 每次考试会在若干个不同的考点同时举行,每个考点用局域网,产生本考点的成绩.考试结束后,各个考点的成绩将即刻汇总成一张总的排名表. 现在就请你写一个程序自动归并各个考点的成绩并生成总排名表. 输入格式: 输入的第一行给出一个

7-21(排序) PAT排名汇总

计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学的评价计算机程序设计人才,为企业选拔人才提供参考标准(网址http://www.patest.cn). 每次考试会在若干个不同的考点同时举行,每个考点用局域网,产生本考点的成绩.考试结束后,各个考点的成绩将即刻汇总成一张总的排名表. 现在就请你写一个程序自动归并各个考点的成绩并生成总排名表. 输入格式: 输入的第一行给出一个

【学习笔记】【C语言】结构体

1.定义结构体变量的3种方式 1> 先定义类型,再定义变量(分开定义) struct Student {    int age; }; struct Student stu;  2> 定义类型的同时定义变量 struct Student {    int age; } stu; struct Student stu2;  3> 定义类型的同时定义变量(省略了类型名称) struct {    int age; } stu;  2.结构体类型的作用域 1> 定义在函数外面:全局有效(

JustOj 2039: 成绩排名 (结构体排序)

题目描述 每次期末考试成绩出来之前的一段时间大豪哥心里都是痛苦的,总感觉自己会在班上排名特别差.所以当成绩出来以后大豪哥想快点知道班上的总排名,以便知道自己的排名.(PS:大豪哥班上有个学霸名叫日天,又名泰迪,不要问我为什么,因为泰迪的行为决定的) 输入 多组测试数据,至文件结尾.先输入每个班上有n个同学,这个学期有m门课程(1<=n,m<=100)接下来有n行,每行的输入格式为学号id,姓名name,课程成绩k1,课程成绩k2... ,课程成绩km.(学号在int型范围以内,0<=ki

题目1014:排名(结构体排序)

问题来源 http://ac.jobdu.com/problem.php?pid=1014 问题描述 每次先输入考生人数N ( 0 < N < 1000 ).考题数M ( 0 < M < = 10 ).分数线(正整数)G:接着是第1题至第M题的正整数分值:之后是每名考生的准考证号(长度不超过20的字符串).题目总数m.以及这m道题的题号(题目号由1到M). 问题分析 直接进行处理,计算出每个学生的总分数,超过分数线就加入到结构体数组中,最后对数组sort一下,输出即可. 注意自定义

结构体-输出一组数的排名

分析: 利用结构体数组存储每个节点的值.下标.排名. 对值排序,填写排名,再对下标排序,输出 代码如下: #include <iostream> #include <string> #include <algorithm> using namespace std; struct node{ int value; int index; int rank; }; bool v_cmp(node x,node y) { return x.value<y.value; }

从头开始-07.Foundation框架常用结构体

一.Foundation框架常用结构体NSRange\CGRange.NSPoint\CGPoint.NSSize\CGSize. NSRect\CGRect 的使用 1.  基本使用: //NSRange的使用 NSRange r1 = NSMakeRange(2, 4); //第一个参数为.location 第二个参数为.length NSString *str = @"学习OC"; NSRange range = [str rangeOfString:@"学习"

《从零开始学Swift》学习笔记(Day 25)——类和结构体定义

原创文章,欢迎转载.转载请注明:关东升的博客  Swift中的类和结构体定义的语法是非常相似的.类使用class关键词定义类,使用struct关键词定义结构体,它们的语法格式如下: class 类名 {     定义类的成员 } struct 结构体名 {     定义结构体的成员 } 从语法格式上看,Swift中的类和结构体的定义更类似于Java语法,不需要像C++和Objective-C那样把接口部分和实现部分放到不同的文件中. 下面来看一个示例: class Employee {     

Swift 2.0学习笔记(Day 25)——类和结构体定义

原创文章,欢迎转载.转载请注明:关东升的博客 Swift中的类和结构体定义的语法是非常相似的.类使用class关键词定义类,使用struct关键词定义结构体,它们的语法格式如下: class 类名 { 定义类的成员 } struct 结构体名 { 定义结构体的成员 } 从语法格式上看,Swift中的类和结构体的定义更类似于Java语法,不需要像C++和Objective-C那样把接口部分和实现部分放到不同的文件中. 下面来看一个示例: class Employee { //定义的类 var no