1. 程式人生 > 其它 >Color the ball HDU - 1556 _差分

Color the ball HDU - 1556 _差分

N名同學拍成一排,編號為1,2,3,4 …… N。現在有一位老師需要檢查所有同學的出勤情況,他會進行點名,每次給出兩個數a,b,並且保證a小於等於b,這個區間內的所有同學都會被點名一次,老師會進行N次點名,請問點名結束後,每位同學被點名的總次數是多少

Input

每個測試例項第一行為一個整數N,(N <= 100000).
接下來的N行,每行包括2個整數a b(1 <= a <= b <= N)。
當N = 0,輸入結束。

Output

每個測試例項輸出一行,包括N個整數,第I個數代表第I個氣球總共被塗色的次數。

Input Sample

3
1 1
2 2
3 3
3
1 1
1 2
1 3
0

Output Sample

1 1 1
3 2 1

分析

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10,INF=0x3f3f3f3f;
int n,m,a,b,d[N];

int main(){
    while(cin>>n && n){
        memset(d,0,sizeof(d));
        m=n; while (m--){
            cin>>a>>b;
            d[a] ++;
            d[b+1] --;
        }
        for(int i=1; i<=n; i++) d[i]+=d[i-1];
        for(int i=1; i<=n; i++) cout<<d[i]<<" \n"[i==n];
    }
}