Submission #1161958

#TimeUsernameProblemLanguageResultExecution timeMemory
1161958gelastropodUnscrambling a Messy Bug (IOI16_messy)C++20
20 / 100
1 ms584 KiB
#include <vector> #include <bits/stdc++.h> using namespace std; #include "messy.h" std::vector<int> restore_permutation(int n, int w, int r) { int logN; for (logN = 0; (1LL << logN) < n; logN++); for (int i = 0; i < logN; i++) { for (int j = 0; j < n; j++) { if (j & (1LL << i)) continue; string crnt = ""; for (int k = 0; k < n; k++) { crnt += ((j ^ k ^ (1LL << (i + 1))) <= (1LL << (i + 1))) + '0'; } add_element(crnt); } } compile_set(); vector<pair<int, int>> inv(n); for (int i = 0; i < n; i++) inv[i].second = i; for (int i = logN - 1; i >= 0; i--) { vector<int> counts(1LL << (logN - i)); auto cinv = inv; for (int j = 0; j < n; j++) { string crnt = ""; for (int k = 0; k < n; k++) { crnt += ((cinv[k].first ^ (1LL << i + 1)) == cinv[j].first || k == j) + '0'; } bool res = check_element(crnt); if (res) { inv[j].second = counts[inv[j].first >> i]; counts[inv[j].first >> i]++; } else { inv[j].second = counts[(inv[j].first >> i) + 1]; counts[(inv[j].first >> i) + 1]++; inv[j].first += (1LL << i); } } } vector<int> ans(n); for (int i = 0; i < n; i++) { ans[inv[i].first] = 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...