행 N 풍선은, 왼쪽에서 오른쪽으로는 1,2,3 .... N. 주어 두 번째 정수 각 AB (a <= b), 렐레들이 타고 그의 "조금 각 풍선 색상을 그린에 풍선에서 비둘기 "브랜드 전기 자동차 시작 플라잉 B 차례 풍선합니다. N 시간은 내가 잊어 버린 Lele의 후 그러나 첫 번째 풍선 여러 번 색을 색칠하고있다, 당신은 그 각각의 풍선 여러 가지 색상을 코팅 계산을 도와 드릴까요?
입력 테스트 케이스는 제 정수 N (N <= 100,000) 작용한다 . 다음의 N 개의 행 (1 <= A <= 두 정수를 AB를 포함하는 각 행 <= N B)를.
경우 N = 0, 입력의 종료. 출력 각 테스트 케이스 출력 라인은 N의 정수를 포함하고, I의 수, I는 풍선의 수가 총 착색 나타낸다. 샘플 입력
3 1 1 2 2 3 3 3 1 1 1 2 1 3 0샘플 출력
1 1 1 3 2 1
사용법 #include <iostream> #INCLUDE <cstdio> #INCLUDE < 문자열 > #INCLUDE <CString을> #INCLUDE <알고리즘> #INCLUDE <STDIO.H> #INCLUDE < 문자열 .H> #DEFINE (INT위한 담당자 (I, n)의 I = 0; I는 <(N) ⅰ) ++ 사용 스페이스 성병; 타입 정의 부호없는 긴 긴 날개 펼진; INT FA [ 100009 ]; 긴 길이 의 ANS = 0 ; int로 이 [ 100009 ], 합계 [ 10009를 ]; INTC [ 100009 ]; INT의 N; INT lowerbit ( INT X) { 복귀 , X (- X); } 공극 업데이트 ( INT (X), INT의 값) { 위해 ( int로 I =의 X를, 난 = <N; I + = lowerbit (I)) { C [I]는 + = 값; } } INT getsum ( INT X) { INT ANS = 0 ; 위한 ( int로 I =의 X를, I> 0 ; I - =lowerbit (I)) { ANS + = C의 [I]을; } 반환 ANS; } INT 의 main () { 동안 (~는 scanf ( " %의 D ' , N) && N) { memset 함수 (C, 0 , 는 sizeof (c)); 위한 ( int로 I = 0 ; I <N이 나 ++ ) { INT의 L, R; scanf와 ( " % d 개 %의 D ' , L, R); 업데이트 (L, 1 ); 업데이트 (R + 1 - 1 ); } 에 대해 ( int로 I = 1 난 ++; i가 N = < ) { 경우 (I == 1 ) << COUT getsum (I); 다른 COUT << " " << getsum (I); } COUT << ENDL; } 반환 0 ; }