Submission #1044598

#TimeUsernameProblemLanguageResultExecution timeMemory
1044598ZicrusUnscrambling a Messy Bug (IOI16_messy)C++17
38 / 100
1 ms600 KiB
#include <bits/stdc++.h>
#include "messy.h"
using namespace std;

typedef long long ll;

vector<int> restore_permutation(int n, int w, int r) {
    string s = "";
    for (int i = 0; i < n; i++) s += '0';
    for (int i = 0; i < n-1; i++) {
        s[i] = '1';
        add_element(s);
    }
    compile_set();

    vector<int> G(n);
    for (int i = 0; i < n; i++) G[i] = i;
    mt19937 mt(time(0));

    vector<bool> vst(n);
    vector<int> res(n);
    for (int i = 0; i < n; i++) s[i] = '0';
    for (int i = 0; i < n; i++) {
        shuffle(G.begin(), G.end(), mt);
        bool found = false;
        ll skipped = -1;
        for (int p1 = 0; p1 < n && !found; p1++) {
            int p = G[p1];
            if (vst[p]) continue;
            if (skipped == -1) {
                skipped = p;
                continue;
            }

            string tmp = s;
            tmp[p] = '1';
            found = check_element(tmp);
            if (found) {
                s[p] = '1';
                vst[p] = true;
                res[p] = i;
            }
        }
        if (!found) {
            s[skipped] = '1';
            vst[skipped] = true;
            res[skipped] = i;
        }
    }

    return res;
}
#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...