알고리즘/세그먼트 트리3 2357 최댓값과 최솟값 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677#include #include #include #define MAX 1e9+5 using namespace std;typedef long long ll; ll maxT[2000005] = { 0 };ll minT[2000005];ll Tsize,maxTmp,minTmp; void update(ll idx, ll num) { idx += Tsize-1; maxT[idx] = num; minT[idx] = num; while (idx > 1) { id.. 2019. 2. 15. 11505 구간 곱 구하기 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869#include #include #include #define div 1000000007 typedef long long ll;using namespace std; ll tree[20000000];ll size,ret; void update(ll idx, ll num) { idx += size - 1; tree[idx] = num; while (idx > 1) { idx /= 2; tree[idx] = tree[idx * 2] * tree[idx * 2 + 1]%div; }} .. 2019. 2. 15. 2042 부분합 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263#include #include using namespace std;typedef long long ll; ll arr[1000002] = { 0 };ll tree[2000010] = { 0 };ll size,ret=0; void update(ll idx, ll data) { idx += size-1; tree[idx] = data; while (idx > 1) { idx /= 2; tree[idx] = tree[idx * 2] + tree[idx * 2 + 1]; } } void sum(ll le.. 2019. 2. 14. 이전 1 다음