PASCAL一条题目!!超高悬赏

来源:百度知道 编辑:UC知道 时间:2024/06/08 11:11:28
衡中的学生很郁闷啊!每天都要考试,考不好了还要挨批斗~~~~~
又考试了,这次考试的人数特别多,每个人的学号很特别,是用字符串表示的,(不超过30 位),可是学校负责考试的老师
请假回家了,所以这次考试没有人安排考场了。
无奈啊~~~~~~
所以m哥决定让学生在自己的座位上考试,实行诚实考试制度(没有监考老师)。衡中的学生很听话啊~~~~,每个人都没有作
弊。
但是录分、统计成了问题,学生的考试成绩放在了输入文件中。

m哥今天太累了,但是他还是很关心学生的成绩的,于是他让你把学生的成绩按学号排列(字典顺序,学号全为小写字母,从
小到大排列)(不排成绩),并统计各个分数,及分数段的人数,以及满分人员(满分要XX奖学金的,虽然一般只有几十块
-_-bbb)
【输入数据】
第一行:一个数 n (n<=130000人)
以下n行:每行两个信息,分别为学号,分数(1~150分)
输入格式: 第一行:一个数 n (n<=130000人)
以下n行:每行两个信息,分别为学号,分数(1~150分)
输出格式: 第一行 各个分数段(空格隔开)(例如 1~10 11~20 ……(见例样输出,不包括150分的人数))
第二行 各个分数段的人数(空格隔开,没有则输出0 )
接下来的n 行,分别为n个学生的学号,成绩,(空格隔开)
再接下来的一行为满分的人的人数x(如果没有则为0)(保证x不超过10000)
接下来的x行为满分人的学号(如果x为0则为一行‘No')(按字典序从小到大排序)

每一行的每一个数据之间用空格隔开,最后一个数据后不允许有空格。
输入文件: 直接输入即可
输出文件: 直接输出即可 注意,不要在最后输出空行或空格!
样例输入: 3
bid 50
wxy 85
alc 55
样例输出: 1~9 10~19 20~29 30~39 40~49 50~59 60~69 70~79 80~89 90~99 100~109 110~119 120~129 130~139 1

简单的模拟,注意细节就可以了,可以用快排排学号,统计各个分数段的人数用数组下标做分数段每读入一个处理一个,类型应该为longint(做数据是用随机数做的,不过有几个点是经过修改的),注意分数段中没有0分和150分的.

code:

program dam(input,output);
const ssss='1~9 10~19 20~29 30~39 40~49 50~59 60~69 70~79 80~89 90~99 100~109 110~119 120~129 130~139 140~149';
var chengji:array[0..14] of longint;
manfenna:array[0..10000] of string[30];
i,j,n,manfen:longint;
s:string;
ren:array[0..200000] of record
xuehao:string[30];
chengji:byte;
end;
code:integer;

procedure tiqian;
begin
writeln(ren[1].xuehao,' ',ren[1].chengji);
if ren[1].chengji=150 then
begin
writeln(1);
writeln(ren[1].xuehao);
end
else begin writeln(0);writeln('N