Submission #1233164

#TimeUsernameProblemLanguageResultExecution timeMemory
1233164AMel0nUnscrambling a Messy Bug (IOI16_messy)C++20
100 / 100
1 ms584 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define FOR(i,N) for(ll i = 0; i < N; i++) #define all(x) (x).begin(), (x).end() #define F first #define S second #include "messy.h" int n; vector<unordered_set<int>> v; vector<int> res; void add(int l, int r) { // incl, incl if (l == r) return ; string x(n, '0'); FOR(i, n) if (i < l || i > r) x[i] = '1'; int m = (l + r) / 2; for(int i = l; i <= m; i++) { // l->m (not l->r) x[i] = '1'; add_element(x); x[i] = '0'; } add(l, m); add(m+1, r); } void check(int l, int r, int iv) { // incl, incl, segtree indexing if (l == r) { res[*v[iv].begin()] = l; return ; } string x(n, '0'); FOR(i, n) if (v[iv].find(i) == v[iv].end()) x[i] = '1'; for(auto i: v[iv]) { x[i] = '1'; if (check_element(x)) { v[iv * 2].insert(i); } else { v[iv * 2 + 1].insert(i); } x[i] = '0'; } check(l, (l+r) / 2, iv * 2); check((l+r) / 2 + 1, r, iv * 2 + 1); } vector<int> restore_permutation(int n, int w, int r) { ::n = n; add(0, n-1); compile_set(); v.resize(n*4); res.resize(n); FOR(i, n) v[1].insert(i); check(0,n-1,1); 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...