3006 - 터보소트
3006번: 터보소트 첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이며, 배열의 크기이다. 둘째 줄부터 N개의 줄에는 1보다 크거나 같고, N보다 작거나 같은 수가 중복 없이 주어진다 www.acmicpc.net #include const int LN = 1e5; int N; int idxs[LN + 10]; int tree[LN * 3 + 10]; int seg_init(int n, int s, int e) { if (s == e) { return tree[n] = 1; } int m = (s + e) / 2; return tree[n] = seg_init(n * 2, s, m) + seg_init(n * 2 + 1, m + 1, e); } void upda..
더보기
1777 - 순열복원
1777번: 순열복원 순열의 크기 N(1 ≤ N ≤ 100,000)이 주어진다. 두 번째 줄에는 순열 1, 2, …, N에 해당하는 Inversion sequence가 공백으로 구분되어 들어온다. www.acmicpc.net #include const int LN = 1e5 * 3; int tree[LN]; int N, r; int ARR[LN]; int R_ARR[LN]; int push(int n, int s, int e, int t, int v) { if (t < s || e < t) { return tree[n]; } if (s == e && t == s) { tree[n] = v; return tree[n]; } int m = (s + e) / 2; push(n * 2, s, m, t, v); ..
더보기