Submission #1352684

#TimeUsernameProblemLanguageResultExecution timeMemory
1352684vjudge1Unscrambling a Messy Bug (IOI16_messy)C++17
0 / 100
1 ms344 KiB
#include "bits/stdc++.h"
#include "messy.h"
using namespace std;
#define f1(n) for(int i=0;i<n;i++)
#define f3(n) for(int j=0;j<n;j++)
#define f2(m,n,q) for(int i=m;i<n;i+=q)
#define f4(m,n,q) for(int j=m;j<n;j+=q)
#define pb push_back
using pr=pair<int,int>;
using ar=array<int,3>;
vector<int>p;
void print(int l,int r,string& s) {
    //base case
    if (r-l==1)return;
    int mid=(l+r)/2;
    for (int i=l;i<mid;i++) {
        s[i]='1';
        add_element(s);
        s[i]='0';
    }
    for (int i=l;i<mid;i++) {
        s[i]='1';
    }
    print(mid,r,s);
    for (int i=l;i<r;i++) {
        if (i<mid)s[i]='0';
        else s[i]='1';
    }
    print(l,mid,s);

}
void query(int l,int r,string& s,vector<int>v) {
    // base_case
    if (r-l==1) {
        p[v[0]]=l;
        return;
    }
    int mid=(l+r)/2;
    vector<int> vl,vr;
    for (auto it:v) {
        s[it]='1';
        if (check_element(s))vl.pb(it);
        else vr.pb(it);
        s[it]='0';
    }
    for (auto it:vr)s[it]='1';
    query(l,mid,s,vl);
    for (auto it:vr)s[it]='0';

    for (auto it:vl)s[it]='1';
    query(mid,r,s,vr);
    for (auto it:vl)s[it]='0';

}
vector<int> restore_permutation(int n, int w, int r) {
    string s(n,'0');
    print(0,n,s);
    vector<int>v;
    for (int i=0;i<n;i++)v.pb(i);
    p.resize(n);
    query(0,n,s,v);
    return p;
}
#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...