P1003学生成绩
时间限制 : 20000 MS 空间限制 : 65536 KB
问题描述
某年级有n(n<=5000)个学生,学号1到n,现给出这n个学生的语文和数学成绩,请按数学成绩的由高到低对这n个学生进行排序。数学成绩相同的学生,按语文成绩由高到低排序
输入格式
第一行,一个整数n,表示n个学生
第二行,n个空格间隔的整数,表示学号1到n的学生的数学成绩
第三行,n个空格间隔的整数,表示学号1到n的学生的语文成绩
输出格式
排序后输出n行,每行代表一个学生。
每行两个数字,分为该生的数学和语文成绩
样例输入
6
67 88 91 88 99 88
80 92 69 70 85 77
样例输出
99 85
91 69
88 92
88 77
88 70
67 80
#include<bits/stdc++.h>
using namespace std;
const int MAX_N=5000+5;
int n,ma[MAX_N],ch[MAX_N];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>ma[i];
}
for(int i=1;i<=n;i++)
{
cin>>ch[i];
}
for(int i=2;i<=n;i++)
{
int m=ma[i],c=ch[i],j;
for(j=i-1;j>=1&&(ma[j]<m||(ma[j]==m&&ch[j]<c));j--)
{
ma[j+1]=ma[j];
ch[j+1]=ch[j];
}
ma[j+1]=m;
ch[j+1]=c;
}
for(int i=1;i<=n;i++)
{
cout<<ma[i]<<" "<<ch[i]<<endl;
}
}