Submission #1022957

#TimeUsernameProblemLanguageResultExecution timeMemory
1022957amirhoseinfar1385Unscrambling a Messy Bug (IOI16_messy)C++17
100 / 100
2 ms636 KiB
#include<bits/stdc++.h>
#include "messy.h"
using namespace std;
vector<int>res;
string ers;

void pors(int l,int r){
    if(l==r){
        return ;
    }
    for(int i=l;i<=r;i++){
        ers[i]='1';
    }
    for(int i=l;i<=((r+l)>>1);i++){
        ers[i]='0';
        add_element(ers);
        ers[i]='1';
    }
    for(int i=l;i<=r;i++){
        ers[i]='0';
    }
    pors(l,(r+l)/2);
    pors((l+r)/2+1,r);
}

void javab(vector<int>e,int l,int r){
//    cout<<l<<" "<<r<<" "<<(int)e.size()<<endl;
    if(l==r){
        res[e[0]]=l;
        return ;
    }
    vector<int>chap,rast;
    for(auto x:e){
        ers[x]='1';
    }
    for(auto x:e){
        ers[x]='0';
        if(check_element(ers)){
            chap.push_back(x);
        }else{
            rast.push_back(x);
        }
        ers[x]='1';
    }
    for(auto x:e){
        ers[x]='0';
    }
    javab(chap,l,(l+r)>>1);
    javab(rast,((l+r)>>1)+1,r);
}

std::vector<int> restore_permutation(int n, int w, int r) {
    res.resize(n);
    ers.resize(n);
    pors(0,n-1);
    //add_element("0");
    compile_set();
    //check_element("0");
    vector<int>pars;
    for(int i=0;i<n;i++){
        pars.push_back(i);
    }
    javab(pars,0,n-1);
    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...