Submission #894065

#TimeUsernameProblemLanguageResultExecution timeMemory
894065MilosMilutinovicMonster Game (JOI21_monster)C++17
91 / 100
60 ms1364 KiB
#include "monster.h" #include <bits/stdc++.h> using namespace std; namespace { bool example_variable; } // namespace vector<int> Solve(int n) { vector<int> order(n); iota(order.begin(), order.end(), 0); vector<int> tmp(n); function<void(int, int)> MergeSort = [&](int l, int r) { if (l == r) { return; } int mid = l + r >> 1; MergeSort(l, mid); MergeSort(mid + 1, r); for (int i = l; i <= r; i++) { tmp[i] = order[i]; } int pl = l, pr = mid + 1; int ptr = l; while (pl <= mid || pr <= r) { if (pl > mid) { order[ptr++] = tmp[pr++]; } else if (pr > r) { order[ptr++] = tmp[pl++]; } else { order[ptr++] = (Query(tmp[pl], tmp[pr]) ? tmp[pl++] : tmp[pr++]); } } }; MergeSort(0, n - 1); int pos = -1; vector<int> bad; for (int i = 1; i < n; i++) { if (!Query(order[0], order[i])) { bad.push_back(i); } } if ((int) bad.size() > 1) { pos = bad.rbegin()[1]; } else { bool ok = true; for (int i = 2; i < n; i++) { if (!Query(order[1], order[i])) { ok = false; break; } } if (ok) { pos = 1; } else { pos = 0; } } vector<int> res; function<void(int, int)> Solve = [&](int l, int r) { for (int i = r; i >= l; i--) { res.push_back(order[i]); } if (r == n - 1) { return; } for (int i = r + 1; i < n; i++) { if (!Query(order[l], order[i])) { Solve(r + 1, i); break; } } }; Solve(0, pos); reverse(res.begin(), res.end()); vector<int> ret(n); for (int i = 0; i < n; i++) { ret[res[i]] = i; } return ret; }

Compilation message (stderr)

monster.cpp: In lambda function:
monster.cpp:20:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   20 |     int mid = l + r >> 1;
      |               ~~^~~
monster.cpp: At global scope:
monster.cpp:8:6: warning: '{anonymous}::example_variable' defined but not used [-Wunused-variable]
    8 | bool example_variable;
      |      ^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...