WZK的排名
题目大意
- 就是有一些学生的成绩按分数从高到低排名,成绩相同按年级从低到高排,问对于每一个排名的学生前,有几位学生的年级低于他.
输入样例
5
300 5
200 6
350 4
400 6
250 5
输出样例
0
0
1
1
3
数据范围
- 【数据范围】 对于100%的数据:1≤n≤200,0≤s≤400,1≤g≤6.
解题思路
- 其实就是来排序成绩,再枚举,来看看每个学生前的人是否有人比他年级小又成绩比她高的就统计即可.
程序如下
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,ans;
struct jgt
{
int q,p;
}a[10001];
bool cmp(jgt x,jgt y)
{
return x.q>y.q||y.q==x.q&&x.p<y.p;
}
int main()
{
freopen("paiming.in","r",stdin);
freopen("paiming.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;++i)
scanf("%d%d",&a[i].q,&a[i].p);
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;++i)
{
ans=0;
for(int j=1;j<i;++j)
{
if(a[i].p>a[j].p) ans++;
}
printf("%d\n",ans);
}
return 0;
}