1155: 春运
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 178 Solved: 49
[ Submit][ Status][ Web Board]
Description
春运将至,有关部门要统计春运的人流量。现有一辆公交车,共停N(1<N<1000000)个车站(车站编号为1,2,3,……),然后给出M个人,每个人从a车站上车,然后在b车站下车,你的任务是统计这辆公交车停靠每一站时车上的人数。车上的人数包括本站上车和未下车的人,本站下车的人数不应记录。
Input
每个测试实例第一行为一个整数N,(N <= 1000000).和一个正整数M(M<=1000000),接下来M行每行包括2个整数a b(1 <= a < b <= N)。
当N = 0,输入结束。
当N = 0,输入结束。
Output
每个测试实例输出一行,包括N个整数,第I个数代表这辆公交车停靠第I个车站时车上的人数。
Sample Input
3 2
1 2
2 3
3 3
1 2
1 3
2 3
0
Sample Output
1 1 0
2 2 0
【解析】
一开始做这道题的时候其实没什么思路...不过经过点播我发现这种题包括前面的时间段问题求解感觉有一个共同的
小套路那就是开数组把每个状态下的人数记录下来我们就能知道哪个站下车的有几个人了。
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
long long n,m,i,j,x,y;
long long a[10000000]
while(~scanf("%lld%lld",&n,&m))
{
if(n==0)
break;
else{
memset(a,0,sizeof(a));
for(i=0;i<m;i++)
{
scanf("%lld%lld",&x,&y);
a[x]++;
a[y]--;
}
for(i=1;i<=n;i++)
{
a[i]+=a[i-1];
printf("%lld",a[i]);
if(i<n)
printf(" ");
}
printf("\n");
}
}
return 0;
}