Problem 1021 飛船賽

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

Problem Description

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

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

Input

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

Output


對(duì)于每組數(shù)據(jù),輸出僅一行包含一個(gè)整數(shù),即"超車"的次數(shù)對(duì)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