Submission #1258623

#TimeUsernameProblemLanguageResultExecution timeMemory
1258623daotuankhoiJousting tournament (IOI12_tournament)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; #ifdef LOCAL #include "algo/debug.h" #else #define debug(...) 42 #endif template <class T> bool ckmax(T &a, T b) { return a < b ? (a = b, true) : false; } template <class T> bool ckmin(T &a, T b) { return a > b ? (a = b, true) : false; } /** Thay vi viec ta dat thg n o vi tri nao do roi kiem tra xem no thang duoc bao nhieu tran voi do phuc tap O(n^2) thi ta se tinh dap an cho tat ca cac vi tri co the dat trong 1 lan. Cac vi tri co the dat thg n: slot_0 rank(1) slot_1 rank(2) ... slot_n-2 rank(n - 1) slot_n-1 (n vi tri dat) Cac slot nam xen ke giua 2 thg ban dau Goi cnt[i] = so tran thang khi dat thg r o slot thu i Ta bieu dien cac thg ban dau va cac tran dau duoi dang cay Cac la la cac thg ban dau Khi xet den tran thu i, co canh noi tu i den tat ca cac dinh tu l -> r sau khi nen lai (Khi xong 1 tran, doan [l, r] se nen lai thanh 1 phan tu Gia su trong cay con goc u quan ly cac dau si tu [l -> r] Thi doan nay anh huong den cac slot tu [l -> r - 1] (ly do vi khi ta nhet thg r vao 1 trong cac vi tri tu l -> r - 1, thang cuoi cung se bi day ra khoi doan, khien no khong anh huong gi den cac slot tu l -> r - 1) => Doan ma cay con goc u anh huong la [l, r) Khi ta duyet tu con v1 -> v2, doan no se la [l1, r1) + [l2, r2) nhung ban chat khi r1 bi day ra nhung no van nam trong doan anh huong, the nen ta phai cong ca dong gop cua r1 (r1 + 1 = l2) Vi tong tat ca (ri - li + 1) = n nen ta for trau l -> r **/ const int MAXN = 2e5 + 5; int id[MAXN]; int n, m, late; int rk[MAXN]; vector<int> g[MAXN]; int curLeaf = 0; /// vi cac la bieu dien tu 0 -> n - 1 nen ta duy tri chi so la hien tai int dfs(int u) { if (u == 0) { curLeaf++; /// [l, l) la doan rong nen no se khong co dong gop gi return -1; } int s = curLeaf, mx = -1; for (int v : g[u]) { ckmax(mx, dfs(v)); if (v != g[u].back()) /// khi khong bi day ra khoi doan, cong them dong gop cua thg cuoi vao ckmax(mx, rk[curLeaf]); } if (late > mx) { id[s]++; id[curLeaf]--; /// curLeaf tai thoi diem nay la diem cuoi cua doan [l, r), khong dong gop vao dap an } return mx; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> m >> late; for (int i = 1; i < n; i++) { cin >> rk[i]; } for (int i = 1; i <= m; i++) { int l, r; cin >> l >> r; for (int j = l; j <= r; j++) { g[i].emplace_back(id[j]); id[j] = 0; } id[l] = i; } memset(id, 0, sizeof id); dfs(m); curLeaf = 0; for (int i = 0; i < n; i++) { id[i + 1] += id[i]; if (id[curLeaf] < id[i]) curLeaf = i; } cout << curLeaf; return 0; }

Compilation message (stderr)

/usr/bin/ld: /tmp/cchFkphJ.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccSdI9il.o:tournament.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/cchFkphJ.o: in function `main':
grader.cpp:(.text.startup+0x120): undefined reference to `GetBestPosition(int, int, int, int*, int*, int*)'
collect2: error: ld returned 1 exit status