Submission #1206071

#TimeUsernameProblemLanguageResultExecution timeMemory
1206071ericl23302Unscrambling a Messy Bug (IOI16_messy)C++20
100 / 100
1 ms584 KiB
#include <vector> #include <iostream> #include <string> #include "messy.h" using namespace std; void recurseAdd(int left, int right, string &cur) { // [left, right] int mid = (left + right) / 2; for (int i = left; i <= mid; ++i) { cur[i] = '1'; add_element(cur); // cout << cur << endl; cur[i] = '0'; } if (left == right - 1) return; for (int i = left; i <= mid; ++i) cur[i] = '1'; recurseAdd(mid + 1, right, cur); for (int i = left; i <= mid; ++i) cur[i] = '0'; for (int i = mid + 1; i <= right; ++i) cur[i] = '1'; recurseAdd(left, mid, cur); for (int i = mid + 1; i <= right; ++i) cur[i] = '0'; } void recurseQuery(int left, int right, vector<int> &p, string &cur) { // for(int &i : p) cout << i << ' '; // cout << endl; vector<int> cop(right + 1, -1); for (int i = left; i <= right; ++i) cop[i] = p[i]; int cur1 = left, cur2 = (left + right) / 2 + 1; for (int i = left; i <= right; ++i) { cur[cop[i]] = '1'; // cout << cur << endl; if (check_element(cur)) p[cur1++] = cop[i]; else p[cur2++] = cop[i]; cur[cop[i]] = '0'; } // for(int &i : p) cout << i << ' '; // cout << endl; if (left == right - 1) return; int mid = (left + right) / 2; for (int i = left; i <= mid; ++i) cur[p[i]] = '1'; recurseQuery(mid + 1, right, p, cur); for (int i = left; i <= mid; ++i) cur[p[i]] = '0'; for (int i = mid + 1; i <= right; ++i) cur[p[i]] = '1'; recurseQuery(left, mid, p, cur); for (int i = mid + 1; i <= right; ++i) cur[p[i]] = '0'; } std::vector<int> restore_permutation(int n, int w, int r) { string str = ""; for (int i = 0; i < n; ++i) str += '0'; recurseAdd(0, n - 1, str); compile_set(); vector<int> p(n); for (int i = 0; i < n; ++i) p[i] = i; recurseQuery(0, n - 1, p, str); vector<int> res(n, -1); for (int i = 0; i < n; ++i) res[p[i]] = i; return res; }

Compilation message (stderr)

messy.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
messy_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...