# 세그먼트 트리
기본적인 세그먼트 트리
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <vector> #include <queue> #include <set> #include <map> #define MAX 1000005 #define INF 987654321 #define MOD 31991 #pragma warning(disable:4996) using namespace std; typedef long long ll; typedef pair<int, int> pi; ll n,m,k,a,b,c,arr[MAX*4]; ll update(ll c, ll l, ll r ,ll f,ll val) { if(!(l<=f&&f<=r)) return arr[c]; else if(l==r) return arr[c] = val; ll mid = (l+r)/2; return arr[c] = update(c*2,l,mid,f,val)+update(c*2+1,mid+1,r,f,val); } ll query(ll c, ll l, ll r, ll s, ll f) { if(r<s||f<l) return 0; else if(s<=l&&r<=f) return arr[c]; ll mid = (l+r)/2; return query(c*2,l,mid,s,f)+query(c*2+1,mid+1,r,s,f); } int main() { scanf("%lld %lld %lld",&n,&m,&k); for(int i=1;i<=n;i++) { scanf("%lld",&a); update(1,1,n,i,a); } for(int i=0;i<m+k;i++) { scanf("%lld %lld %lld",&a,&b,&c); if(a==1) update(1,1,n,b,c); else printf("%lld\n",query(1,1,n,b,c)); } return 0; }
'IT > BOJ' 카테고리의 다른 글
백준(BOJ) 1965 상자넣기 * (0) | 2018.09.28 |
---|---|
백준(BOJ) 1275 커피숍2 ** (0) | 2018.09.28 |
백준(BOJ) 2512 예산 ** (0) | 2018.09.14 |
백준(BOJ) 4526 트리 * (0) | 2018.09.08 |
백준(BOJ) 11067 피타고라스 기대값 * (0) | 2018.08.21 |