Submission #1258410

#TimeUsernameProblemLanguageResultExecution timeMemory
1258410thewizardmanUnscrambling a Messy Bug (IOI16_messy)C++20
100 / 100
1 ms584 KiB
#include "messy.h" #include <bits/stdc++.h> using namespace std; int n, a[128], b[128], c[128]; void dc1(int l1, int r1, int l2, int r2, int k) { string s(n, '0'); int mid = (l1 + r1) / 2; for (int i = l2; i < r2; i++) s[i] = '1'; for (int i = l1; i < mid; i++) { s[i] = '1'; add_element(s); a[i] |= (1<<k); s[i] = '0'; } if (l1 != mid && mid != r1) { dc1(l1, mid, mid, r1, k+1); dc1(mid, r1, l1, mid, k+1); } } void dc2(vector<int> v1, vector<int> v2, int k) { string s(n, '0'); vector<int> v3, v4; for (auto i: v2) s[i] = '1'; for (auto i: v1) { s[i] = '1'; if (check_element(s)) v3.push_back(i), b[i] |= (1<<k); else v4.push_back(i); s[i] = '0'; } if (v3.size() > 1 && v4.size() > 1) { dc2(v3, v4, k+1); dc2(v4, v3, k+1); } } vector<int> restore_permutation(int n, int w, int r) { ::n = n; dc1(0, n, n, n, 0); compile_set(); vector<int> temp(n), ans(n); iota(temp.begin(), temp.end(), 0); dc2(temp, vector<int>(), 0); for (int i = 0; i < n; i++) c[a[i]] = i; for (int i = 0; i < n; i++) ans[i] = c[b[i]]; return ans; }

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...