题目链接:http://acm.fzu.edu.cn/problem.php?pid=1021
解题思路:
速度Vi(0<Vi<100),给出的飞船信息按照起跑位置Xi的升序排列,即X1<X2<X3<…<Xn,因此只需在每次输入一条船的信息时判断在它之前有几条速度大于它的船,这些船会超过他,加起来就是超越次数。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int c[105];
__int64 x;
int v,n;
while(scanf("%d",&n) && n!=0)
{
int count=0;
memset(c,0,sizeof(c));
for(int i=0;i<n;i++)
{
scanf("%I64d %d",&x,&v);
c[v]++;//存储当前速度船的数量
for(int i=v+1;i<104;i++)
{
count=(count+c[i])%1000000;//速度比他大但位置在他后面的船的数量
// count=count%1000000;
}
}
printf("%d\n",count);
}
}