제출 #1273980

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

int N;
vector<int> ans;

void construct(int l, int r) {
    if (l >= r) return;
    string t = "";
    for (int i = 0; i < N; i ++) t += '1';
    for (int i = l; i <= r; i ++) t[i] = '0';
    int mid = (l+r)/2;
    for (int i = l; i <= mid; i ++) {
        t[i] = '1';
        add_element(t);
        t[i] = '0';
    }
    construct(l, mid);
    construct(mid+1, r);
}

void solve(int l, int r, vector<int> id) {
    if (id.size() == 1) {
        ans[id[0]] = l;
        return;
    }
    vector<int> L, R;
    string t = "";
    for (int i = 0; i < N; i ++) t += '1';
    for (int i:id) t[i] = '0';
    for (int i:id) {
        t[i] = '1';
        if (check_element(t)) L.push_back(i);
        else R.push_back(i);
        t[i] = '0';
    }
    int mid = (l+r)/2;
    solve(l, mid, L);
    solve(mid+1, r, R);
}

vector<int> restore_permutation(int n, int w, int r) {
    N = n;
    construct(0, N-1);
    compile_set();
    vector<int> id;
    for (int i = 0; i < N; i ++) id.push_back(i);
    ans.resize(N);
    solve(0, N-1, id);
    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...