제목 설명
그는 컬럼의 수를 알고있는 경우, 다음과 같은 두 가지 작업을 수행해야합니다 :
-
의 숫자 플러스 X
-
각 섹션의 번호를 취득하고
입력 형식
첫 번째 라인은 두 양의 정수를 포함 N-, m은 각각 열 및 디지털 연산의 총 수의 수를 나타낸다.
두 번째 행은 포함 N 수가 정수가 상기 제 스페이스로 분리 I 번째 열의 번호를 나타내는 i 개의 항목 I의 초기 값.
다음 m의 선이 포함 된 3 개. 다음 정수,는 하나 개의 동작을 나타낸다 :
-
1 x k
의미 : 제 X의 수는 플러스 X K -
2 x y
의미 : 출력 간격 [X, Y]를 각 숫자 및
출력 형식
출력은 라인의 정수, 모든 작업이 포함되어 이 개 결과를.
에:
5 5
1 5 4 3 2
1 1 3
2 2 5
1 3 -1
1 4 2
2 4 1
밖:
(14)
(16)
#INCLUDE <비트 / stdc ++ H.> 사용 스페이스 성병; INT 트리 [ 500,050 ]; INT의 N, m; INT lowbit ( INT X) { 복귀 , X - X; } 공극 추가 ( INT의 X, INT K) { 대 ( INT I = X; I <= N; I + = lowbit (I)) { 트리 [I] + = K; } } INT find1 ( INT X) { INT의 합 = 0 ; 대한 ( INTX = I, I, I- = lowbit (I)) { 합계 + = 트리 [I]; } 리턴 합; } INT 의 main () { CIN >> >> N m 단계; 위한 ( INT 난 = 1 ; I <= N; I ++ ) { INT (X); CIN >> X; 추가 (I, X); } 에 대해 ( INT 나 = 1 ; I <= m; I ++ ) { INT의 t, X, Y; CIN >> t >> >> X , Y; 만약 (t == 1 ) 추가 (X, Y); 다른 COUT << find1 (Y) -find1 (X- 1 ) << ENDL; } 반환 0 ; }