Problem 1021 飛船賽

Accept: 1368    Submit: 5167
Time Limit: 1000 mSec    Memory Limit : 32768 KB

Problem Description

有N個飛船進行比賽,它們的跑道為直線并互相平行。每個飛船的起跑位置均不相同。第i個飛船從起跑線右邊Xi處開始向右行駛(Xi各不相同)。比賽開始后,它能在零時間內加速到最大速度Vi并永遠保持此速度。比賽沒有終點,即會永遠進行下去。

你的任務是算出比賽過程中一共有多少次"超車"。

Input

輸入數據由多組數據組成。每組數據格式如下:
第一行為一個整數N(1<=N<=250000)。
接下來的N行,每行兩個整數Xi (0≤Xi≤10^6)和Vi(0<Vi<100),描述了一輛飛船的起跑位置和最大速度。
給出的飛船信息按照起跑位置Xi的升序排列,即X1<X2<X3<…<Xn。
最后一組數據N=0,標志輸入結束,不需要處理。

Output


對于每組數據,輸出僅一行包含一個整數,即"超車"的次數對1000000的模。

Sample Input

4 0 2 2 1 3 8 6 3 0

Sample Output

2
 
 
 
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
const int mod=1000000;
int v[102];
int main()
{
int x,a;
int n;
int sum;
while(scanf("%d",&n),n)
{
memset(v,0,sizeof(v));
sum=0;
for(int i=0;i<n;i++)
{
scanf("%d%d",&x,&a);
v[a]++;
for(int j=a+1;j<102;j++) sum+=v[j];
sum%=mod;
}
printf("%d\n",sum);
}
return 0;
}

文章來源:http://www.cnblogs.com/kuangbin/archive/2011/11/14/2248202.html