1275번: 커피숍2
첫째 줄에 수의 개수 N과 턴의 개수 Q가 주어진다.(1 ≤ N, Q ≤ 100,000) 둘째 줄에는 처음 배열에 들어가 있는 정수 N개가 주어진다. 세 번째 줄에서 Q+2번째 줄까지는 x y a b의 형식으로 x~y까지의 합
www.acmicpc.net
개강하고서 3일동안 붙잡고 있었는디...출력 잘 나오는디.. 2퍼에서 자꾸 틀렸다하네요...포기에요...
package baekjoon;
import java.util.*;
import java.io.*;
public class b1275 {
static long tree[];
static long arr[];
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
tree = new long[n*4];
arr = new long[n+1];
st = new StringTokenizer(br.readLine());
for(int i = 1 ; i <= n ; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
init(1, n, 1);
for(int i = 0 ; i < m ; i++) {
st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
int a = Integer.parseInt(st.nextToken());
long b = Integer.parseInt(st.nextToken());
if(x > y)
swap(x, y);
bw.write(prefixSum(1, n, 1, x, y)+"\n");
update(1, n, 1, a, b);
arr[a] = b;
}
bw.close();
}
public static long init(int s, int e, int n) {
if(s == e)
return tree[n] = arr[s];
int mid = (s+e) / 2;
return tree[n] = init(s, mid, n*2) + init(mid+1, e, n*2+1);
}
public static long prefixSum(int s, int e, int n, int l, int r) {
if(e < l || r < s)
return 0;
if(l <= s && e <= r)
return tree[n];
int mid = (s+e)/2;
return prefixSum(s, mid, n*2, l, r) + prefixSum(mid+1, e, n*2+1, l, r);
}
public static long update(int s, int e, int n, int idx, long val) {
if(idx < s || idx > e)
return tree[n];
if(s == e)
return tree[n] = val;
int mid = (s+e)/2;
return tree[n] = update(s, mid, n*2, idx, val) + update(mid+1, e, n*2+1, idx, val);
}
public static void swap(int a, int b) {
int tmp = a;
a = b;
b = tmp;
}
}
'BOJ' 카테고리의 다른 글
[JAVA]백준 2357번 - 최솟값과 최댓값 (1) | 2023.09.03 |
---|---|
[JAVA]백준 2252번 - 줄 세우기 (0) | 2023.09.02 |
[JAVA]백준 16724번 - 피리 부는 사나이 (0) | 2023.09.01 |
[JAVA]백준 1038번 - 감소하는 수 (0) | 2023.08.30 |
[JAVA]백준 1355 - 구멍난 케이크 자르기 (0) | 2023.08.29 |
댓글