Submission #1317542

#TimeUsernameProblemLanguageResultExecution timeMemory
1317542nikaa123Unscrambling a Messy Bug (IOI16_messy)C++20
100 / 100
1 ms568 KiB
#include <bits/stdc++.h>
#include "messy.h"
using namespace std;

int n1;
vector <int> ans;

void add(int l, int r) {
    if (l == r) return;
    int mid = (l+r)/2;
    string res(n1,'1');
    for (int i = l; i <= r; i++) res[i] = '0';
    for (int i = l; i <= mid; i++) {
        res[i] = '1';
        add_element(res);
        res[i] = '0';
    }
    add(l,mid);
    add(mid+1,r);
}

void getans(int l, int r, vector <int> v) {
    if (l == r) {
        ans[l] = v[0];
        return;
    }
    string res(n1,'1');
    for (auto i:v) res[i] = '0';
    vector <int> lv,rv;
    for (auto i:v) {
        res[i] = '1';
        if (check_element(res)) lv.emplace_back(i); else rv.emplace_back(i);
        res[i] = '0';
    }
    int mid = (l+r)/2;
    getans(l,mid,lv);
    getans(mid+1,r,rv);
}

vector<int> restore_permutation(int N, int w, int r) {
    n1 = N;
    ans.assign(n1, 0);
    add(0,n1-1);
    compile_set();
    vector <int> full(n1);
    iota(full.begin(),full.end(),0);
    getans(0,n1-1,full);
    vector <int> p(n1,0);
    for (int i =0; i < n1; i++) {
        p[ans[i]] = i;
    }
    return p;
}

Compilation message (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...