제출 #1145320

#제출 시각아이디문제언어결과실행 시간메모리
1145320mnbvcxz123Unscrambling a Messy Bug (IOI16_messy)C++20
100 / 100
1 ms584 KiB
#include <vector>
#include <bits/stdc++.h>
#include "messy.h"

using namespace std;

int p[128];

void element_adder(int l, int r, int n) {
    if (l == r) return;
    int m = (l + r) / 2;
    string s(n, '1');
    for (int i = l; i <= r; i++) s[i] = '0';
    for (int i = l; i <= m; i++) {
        s[i] = '1';
        add_element(s);
        s[i] = '0';
    }
    element_adder(l, m, n);
    element_adder(m+1, r, n);
}

void Restore(int l, int r, int n, vector<int> indices) {
    if (l == r) {
        p[indices[0]] = l;
        return;
    }
    string s(n, '1');
    int sz = indices.size();
    for (int i = 0; i < sz; i++) s[indices[i]] = '0';
    vector<int> L, R;
    for (int i = 0; i < sz; i++) {
        int p = indices[i];
        s[p] = '1';
        if (check_element(s)) L.emplace_back(p);
        else R.emplace_back(p);
        s[p] = '0';
    }

    Restore(l, (l+r)/2, n, L);
    Restore((l+r)/2+1, r, n, R);
}



vector<int> restore_permutation(int n, int w, int r) {
    element_adder(0, n-1, n);
    compile_set();
    vector<int> a(n, 0);
    for (int i = 0; i < n; i++) a[i] = i;
    Restore(0, n-1, n, a);
    vector<int> ans(n);
    for (int i = 0; i < n; i++) ans[i] = p[i];
    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...