제출 #1332203

#제출 시각아이디문제언어결과실행 시간메모리
1332203activedeltorreUnscrambling a Messy Bug (IOI16_messy)C++20
100 / 100
1 ms580 KiB
#include "messy.h"
#include <vector>
#include <cstdio>
#include <string>
#include <set>
#include <cstdlib>
#include <iostream>

using namespace std;
void add_element(string x);
bool check_element(string x);
void compile_set();
int rasp[155];
void dnc(int st,int dr,int n)
{
    if(st==dr)
    {
        return;
    }
    string s;
    for(int i=0;i<n;i++)
    {
        s.push_back('1');
    }
    for(int i=st;i<=dr;i++)
    {
        s[i]='0';
    }
    int mij=(st+dr)/2;
    for(int i=st;i<=mij;i++)
    {
        s[i]='1';
        add_element(s);
        s[i]='0';
    }
    dnc(st,mij,n);
    dnc(mij+1,dr,n);
}
void dnc2(int st,int dr,int n,vector<int>can)
{
    if(st==dr)
    {
        rasp[st]=can[0];
        return;
    }
    string s;
    for(int i=0;i<n;i++)
    {
        s.push_back('1');
    }
    for(int i=0;i<can.size();i++)
    {
        s[can[i]]='0';
    }
    vector<int>canst,candr;
    int mij=(st+dr)/2;
    for(int i=0;i<can.size();i++)
    {
        s[can[i]]='1';
        if(check_element(s)==1)
        {
            canst.push_back(can[i]);
        }
        else
        {
            candr.push_back(can[i]);
        }
        s[can[i]]='0';
    }
    dnc2(st,mij,n,canst);
    dnc2(mij+1,dr,n,candr);
}
int rasp2[1005];
std::vector<int> restore_permutation(int n, int w, int r) {
    dnc(0,n-1,n);
    vector<int>cans;
    for(int i=0;i<n;i++)
    {
        cans.push_back(i);
    }
    compile_set();
    dnc2(0,n-1,n,cans);
    vector<int>rez;
    for(int i=0;i<n;i++)
    {
        rasp2[rasp[i]]=i;
    }
    for(int i=0;i<n;i++)
    {
        rez.push_back(rasp2[i]);
       // cout<<rasp[rasp[i]]<<" ";
    }
    return rez;
}
#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...