Submission #628191

#TimeUsernameProblemLanguageResultExecution timeMemory
628191TheQuantiXPrisoner Challenge (IOI22_prison)C++17
90 / 100
14 ms980 KiB
// Made by TheQuantiX #include <bits/stdc++.h> //#pragma GCC optimize("O3,unroll-loops") //#pragma GCC target("avx2,sse4.2,bmi,bmi2,lzcnt,popcnt") using namespace std; using ll = long long; constexpr ll MAXN = 1e5; constexpr ll MOD = 1000000007; constexpr ll INF = 1000000000000000000LL; ll tt, n, m, k, x, y, a, b, c, d; vector< vector<int> > devise_strategy(int n) { vector< vector<int> > ans(1, vector<int>(n + 1)); queue< pair< pair<int, int>, pair< pair<int, int>, pair<int, int> > > > q; q.push({{0, 0}, {{1, n}, {1, n}}}); while (!q.empty()) { auto p = q.front(); q.pop(); ll l = p.second.first.first; ll r = p.second.first.second; ll lt = p.second.second.first; ll rt = p.second.second.second; ll x = p.first.first; // cout << x << ' ' << l << ' ' << r << endl; ans[x].resize(n + 1); ans[x][0] = p.first.second; for (int i = lt; i <= l; i++) { if (p.first.second == 0) { ans[x][i] = -1; } else { ans[x][i] = -2; } } // cout << "DEBUG" << endl; for (int i = r; i <= rt; i++) { if (p.first.second == 0) { ans[x][i] = -2; } else { ans[x][i] = -1; } } l++; r--; // cout << "DEBUG" << endl; if (l > r) { continue; } int mid = (r + l) / 2; ll y = x; if (y % 2 == 1) { y++; } if (y + 1 >= ans.size()) { ans.resize(y + 2); } for (int i = l; i <= mid; i++) { ans[x][i] = y + 1; } q.push({{y + 1, 1 - p.first.second}, {{l, mid}, {l - 1, r + 1}}}); // cout << "DEBUG" << endl; if (l != r) { if (y + 2 >= ans.size()) { ans.resize(y + 3); } for (int i = mid + 1; i <= r; i++) { ans[x][i] = y + 2; } q.push({{y + 2, 1 - p.first.second}, {{mid + 1, r}, {l - 1, r + 1}}}); } } return ans; } //void solve() { // cin >> n; // auto x = devise_strategy(n); //// for (auto &i : x) { //// for (auto j : i) { //// cout << j << ' '; //// } //// cout << '\n'; //// } //// cout << x.size() << '\n'; //} // //int main() { // ios_base::sync_with_stdio(0); // cin.tie(0); // cout.tie(0); // cout << fixed; // cout << setprecision(10); // tt = 1; //// cin >> tt; // while (tt --> 0) { // solve(); // } //}

Compilation message (stderr)

prison.cpp: In function 'std::vector<std::vector<int> > devise_strategy(int)':
prison.cpp:59:19: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |         if (y + 1 >= ans.size()) {
      |             ~~~~~~^~~~~~~~~~~~~
prison.cpp:68:23: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   68 |             if (y + 2 >= ans.size()) {
      |                 ~~~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...