제출 #1104706

#제출 시각아이디문제언어결과실행 시간메모리
1104706onlk97Unscrambling a Messy Bug (IOI16_messy)C++14
100 / 100
3 ms760 KiB
#include <vector>
#include <bits/stdc++.h>
#include "messy.h"
using namespace std;

void dfs1(int l,int r,int n){
    if (l==r) return;
    int mid=(l+r)/2;
    for (int i=l; i<=mid; i++){
        string s="";
        for (int j=0; j<n; j++){
            if (j<l||j>r||j==i) s+='1';
            else s+='0';
        }
        add_element(s);
    }
    dfs1(l,mid,n);
    dfs1(mid+1,r,n);
}
vector <int> ans;
void dfs2(int l,int r,vector <int> can,int n){
    if (can.size()==1){
        ans[can[0]]=l;
        return;
    }
    vector <int> lef,rig;
    for (int i:can){
        string s="";
        for (int j=0; j<n; j++) s+='1';
        for (int j:can) s[j]='0';
        s[i]='1';
        if (check_element(s)) lef.push_back(i);
        else rig.push_back(i);
    }
    int mid=(l+r)/2;
    dfs2(l,mid,lef,n);
    dfs2(mid+1,r,rig,n);
}
vector <int> restore_permutation(int n,int w,int r){
    dfs1(0,n-1,n);
    compile_set();
    vector <int> v;
    for (int i=0; i<n; i++) v.push_back(i);
    ans.resize(n);
    dfs2(0,n-1,v,n);
    return ans;
}
#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...