Submission #1369009

#TimeUsernameProblemLanguageResultExecution timeMemory
1369009marizaUnscrambling a Messy Bug (IOI16_messy)C++20
49 / 100
1 ms344 KiB
#include "messy.h"
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

vector<int> restore_permutation(int n, int w, int r) {
    string s;
    for(ll i=0; i<n; i++) s+='1';

    for(ll i=0; i<5; i++){
        s[i]='0';
        add_element(s);
    }

    s="";
    for(ll i=0; i<n; i++) s+='0';

    for(ll i=5; i<n; i++){
        s[i]='1';
        for(ll j=0; j<5; j++){
            if((1ll<<j)&i){
                s[j]='1';
                add_element(s);
                s[j]='0';
            }
        }
        s[i]='0';
    }

    compile_set();

    s="";
    for(ll i=0; i<n; i++) s+='1';

    vector<int> p(n);
    ll idx[5];
    for(ll i=0; i<5; i++){
        for(ll j=0; j<n; j++){
            if(s[j]=='0') continue;

            s[j]='0';
            if(check_element(s)){
                p[j]=i;
                idx[i]=j;
                break;
            }
            else s[j]='1';
        }
    }

    string t="";
    for(ll i=0; i<n; i++) t+='0';

    for(ll i=0; i<n; i++){
        if(s[i]=='0') continue;

        t[i]='1';
        ll curr=0;
        for(ll j=0; j<5; j++){
            t[idx[j]]='1';
            if(check_element(t)) curr+=(1ll<<j);
            t[idx[j]]='0';
        }
        t[i]='0';

        p[i]=curr;
    }

    return p;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...