描述
春运将至,有关部门要统计春运的人流量。现有一辆公交车,共停N(1<N<1000000)个车站(车站编号为1,2,3,……),然后给出M个人,每个人从a车站上车,然后在b车站下车,你的任务是统计这辆公交车停靠每一站时车上的人数。车上的人数包括本站上车和未下车的人,本站下车的人数不应记录。
输入
每个测试实例第一行为一个整数N,(N <= 1000000).和一个正整数M(M<=1000000),接下来M行每行包括2个整数a b(1 <= a < b <= N)。
当N = 0,输入结束。
输出
每个测试实例输出一行,包括N个整数,第I个数代表这辆公交车停靠第I个车站时车上的人数。
输入样例 1
3 2
1 2
2 3
3 3
1 2
1 3
2 3
0
输出样例 1
1 1 0
2 2 0
对于这题我们可以先用数组去存储每一个站的状态,一个数组存储上车一个数组存储下车,然后输出的时候设置一个sum为0,然后使sum加每一站的上车的人数减下车的人数,sum的值在整个输出不会被初始化,所以没有下车就会被保留
#include <iostream>
#include <cstdio>
using namespace std;
int c[1000005],d[1000005];
int main()
{
int n,m;
while(cin>>n&&n)
{
cin>>m;
fill(c,c+n+1,0);
fill(d,d+n+1,0);
while(m--)
{
int x,y;
cin>>x>>y;
c[x]++;
d[y]++;
}
int sum=0;
for(int i=1;i<=n;i++)
{
sum=sum+c[i]-d[i];
if(i==1)
cout<<sum;
else
cout<<" "<<sum;
}
cout<<endl;
}
return 0;
}