Submission #488468

#TimeUsernameProblemLanguageResultExecution timeMemory
4884688e7던전 (IOI21_dungeons)C++17
Compilation error
0 ms0 KiB
//Challenge: Accepted #include "dungeons.h" #include <iostream> #include <algorithm> #include <vector> #include <utility> using namespace std; void debug(){cout << endl;} template<class T, class ... U> void debug(T a, U ... b){cout << a << " ", debug(b...);} template<class T> void pary(T l, T r) { while (l != r) cout << *l << " ", l++; cout << endl; } #define ll long long #define maxn 400005 #define pii pair<int, int> #define ff first #define ss second #define io ios_base::sync_with_stdio(0);cin.tie(0); int n; vector<int> s, p, w, l, disp; struct WIN{ int anc[19][maxn]; ll ma[19][maxn]; ll sum[19][maxn]; void build() { for (int i = 0;i < n;i++) { anc[0][i] = w[i]; ma[0][i] = s[i]; sum[0][i] = s[i]; } anc[0][n] = n; for (int i = 1;i < 19;i++) { for (int j = 0;j <= n;j++) { anc[i][j] = anc[i-1][anc[i-1][j]]; sum[i][j] = sum[i-1][j] + sum[i-1][anc[i-1][j]]; ma[i][j] = max(ma[i-1][j], ma[i-1][anc[i-1][j]] - sum[i-1][j]); } } } void move(int &x, ll &val) { //brings it to the nearest loss for (int i = 18;i >= 0;i--) { if (val >= ma[i][x]) { val += sum[i][x]; x = anc[i][x]; } } } } win; struct LOSE{ int anc[25][maxn]; ll mi[25][maxn]; ll sum[25][maxn]; void build(int bit) { for (int i = 0;i < n;i++) { if (s[i] >= (1<<bit)) mi[0][i] = s[i]; else mi[0][i] = 1<<(bit+2); if (s[i] < (1<<bit)) sum[0][i] = s[i], anc[0][i] = w[i]; else sum[0][i] = p[i], anc[0][i] = l[i]; } anc[0][n] = n; for (int i = 1;i < 25;i++) { for (int j = 0;j <= n;j++) { anc[i][j] = anc[i-1][anc[i-1][j]]; sum[i][j] = sum[i-1][j] + sum[i-1][anc[i-1][j]]; mi[i][j] = max((ll)0, min(mi[i-1][j], (ll)mi[i-1][anc[i-1][j]] - sum[i-1][j])); } } } void move(int &x, ll &val) { //brings it to the nearest win for (int i = 24;i >= 0;i--) { if (val < mi[i][x]) { val += sum[i][x]; x = anc[i][x]; } } } } lose[13]; void init(int nv, vector<int> sv, vector<int> pv, vector<int> wv, vector<int> lv) { n = nv; s = sv, p = pv, w = wv, l = lv; win.build(); for (int i = 0;i < 13;i++) lose[i].build(i); //lose.build(); } long long simulate(int x, int z) { ll ans = z; for (int i = 0;i < 13;i++) { for (int j = 0;j < 4;j++) lose[i].move(x, ans); win.move(x, ans); } return ans; } /* 3 2 2 6 9 3 1 2 2 2 3 1 0 1 0 1 2 3 3 3 14 14 14 2 1 1 1 2 3 1 2 0 0 0 2 4 1 1 */

Compilation message (stderr)

/tmp/ccWLl33l.o: in function `main':
grader.cpp:(.text.startup+0x178): relocation truncated to fit: R_X86_64_PC32 against `.bss'
grader.cpp:(.text.startup+0x17f): relocation truncated to fit: R_X86_64_PC32 against `.bss'
grader.cpp:(.text.startup+0x19d): relocation truncated to fit: R_X86_64_PC32 against `.bss'
grader.cpp:(.text.startup+0x1a4): relocation truncated to fit: R_X86_64_PC32 against `.bss'
grader.cpp:(.text.startup+0x1b0): relocation truncated to fit: R_X86_64_PC32 against `.bss'
grader.cpp:(.text.startup+0x1b7): relocation truncated to fit: R_X86_64_PC32 against `.bss'
grader.cpp:(.text.startup+0x1c3): relocation truncated to fit: R_X86_64_PC32 against `.bss'
grader.cpp:(.text.startup+0x1ca): relocation truncated to fit: R_X86_64_PC32 against `.bss'
grader.cpp:(.text.startup+0x1d6): relocation truncated to fit: R_X86_64_PC32 against `.bss'
grader.cpp:(.text.startup+0x1dd): relocation truncated to fit: R_X86_64_PC32 against `.bss'
grader.cpp:(.text.startup+0x1e9): additional relocation overflows omitted from the output
/usr/bin/ld: failed to convert GOTPCREL relocation; relink with --no-relax
collect2: error: ld returned 1 exit status