新手 求答案…… 急急急!!
pascal吧
全部回复
仅看楼主
level 4
wjhshaw 楼主
问题 C: 成绩排名时间限制: 1 Sec 内存限制: 128 MB
提交: 369 解决: 60
[提交][答题状态][在线答疑]题目描述
班上刚测试了几门课,现在信息技术的老师要分析一些功课之间的成绩关系,看看每个人的信息技术课排名以及他的数学排名,并按信息技术课的成绩从高分到低分排列(数据中保证任意一学科中没有两个人的这门课成绩是一样的)。老师把任务交给了信息学最好的你,请你编程完成这个任务。
输入
第一行一个整数N,表示共有N个同学的成绩。
后面有N行,每行4个整数,分别表示一个同学的:语文、数学、英语、信息技术成绩。
输出
共N行,每行6个数据,分别对应一个同学的:语文、数学、英语、信息技术成绩 和信息技术及数学的排名。
样例输入390 95 89 11095 120 78 11596 97 103 92样例输出95 120 78 115 1 190 95 89 110 2 396 97 103 92 3 2提示
已修改为:输出间隔为一个空格,请重新提交程序。
求答案及思路!!
2014年11月09日 10点11分 1
level 9
var a,b,c,d,e,f:array[1..10001]of longint;
i,j,k,t,n,l:longint;
begin
readln(n);
for i:=1 to n do read(a[i],b[i],c[i],d[i]);
for i:=1 to n do begin e[i]:=i;f[i]:=i;end;
for i:=1 to n-1 do
for j:=i+1 to n do
if b[i]<b[j] then begin
t:= b[i];
b[i]:=b[j];
b[j]:=t;
t:=e[i];
e[i]:=e[j];
e[j]:=t;
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if d[i]<d[j] then begin
t:=d[i];
d[i]:=d[j];
d[j]:=t;
t:=f[i];
f[i]:=f[j];
f[j]:=t;
end;
for i:=1 to n do writeln(a[i],* *,b[i],* *,c[i],* *,d[i],* *,e[i],* *,f[i]);
end.
2014年11月09日 11点11分 2
好像不太对[汗]
2014年11月12日 13点11分
输出的答案跟要求不一样。
2014年11月12日 13点11分
暴力枚举排序[汗]不超时都不可能
2014年11月13日 02点11分
而且数组范围也爆了
2014年11月13日 02点11分
level 11
128M的内存数组如果太大肯定爆,所以可以用链表,动态数据结构,插入排序,然后遍历输出。当然如果n小于5000的话就用数组,快排然后遍历输出,注意快排时其他科目的成绩要跟着带走
2014年11月13日 02点11分 4
1