제출 #1321537

#제출 시각아이디문제언어결과실행 시간메모리
1321537husseinjuandaUnscrambling a Messy Bug (IOI16_messy)C++20
100 / 100
1 ms568 KiB
#include <bits/stdc++.h>
using namespace std;

#include "messy.h"

string h;

void dnc(int l, int r){
    if(l == r) return;
    int mid = (l+r)/2;
    for(int i = l; i <= mid; i++){
        h[i] = '1';
        // cout << h << endl;
        add_element(h);
        h[i] = '0';
    }
    for(int i = l; i <= mid; i++){
        h[i] = '1';
    }
    dnc(mid+1, r);
    for(int i = l; i <= mid; i++){
        h[i] = '0';
    }
    for(int i = mid+1; i <= r; i++){
        h[i] = '1';
    }
    dnc(l, mid);
    for(int i = l; i <= r; i++){
        h[i] = '0';
    }
}

vector<int> where;

vector<int> ans;

void dnc1(int l, int r){
    if(l == r){
        ans[where[0]] = l;
        return;
    }
    int mid = (l+r)/2;
    vector<int> w;
    vector<int> w1;
    string j = h;
    string s = h;
    // cout << l << " " << r << endl;
    for(auto i : where){
        // cout << i << " ";
        h[i] = '1';
        if(check_element(h)){
            // cout << h << endl;
            w.push_back(i);
            j[i] = '0';
            s[i] = '1';
        }else{
            j[i] = '1';
            s[i] = '0';
            w1.push_back(i);
        }
        h[i] = '0';
    }
    // cout << endl;
    h = j;
    where = w;
    dnc1(l, mid);
    h = s;
    where = w1;
    dnc1(mid+1, r);
}

std::vector<int> restore_permutation(int n, int w, int r) {
    for(int i = 0; i < n; i++){
        h += '0';
    }
    dnc(0, n-1);
    compile_set();
    for(int i = 0; i < n; i++){
        where.push_back(i);
        h[i] = '0';
    }
    ans.resize(n);
    dnc1(0, n-1);
    return ans;
}

컴파일 시 표준 에러 (stderr) 메시지

messy.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
messy_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...