Submission #478501

# Submission time Handle Problem Language Result Execution time Memory
478501 2021-10-07T19:00:07 Z JovanB Unscrambling a Messy Bug (IOI16_messy) C++17
100 / 100
3 ms 460 KB
#include <bits/stdc++.h>
#include "messy.h"

using namespace std;

const int N = 200;

int soln[N+5];

void do_add(int n, int l, int r){
    string qr = "";
    for(int i=0; i<n; i++) qr += '1';
    for(int i=l; i<=r; i++) qr[i] = '0';
    int mid = (l+r)/2;
    for(int i=l; i<=mid; i++){
        qr[i] = '1';
        add_element(qr);
        qr[i] = '0';
    }
    if(mid != l){
        do_add(n, l, mid);
        do_add(n, mid+1, r);
    }
}

void do_find(int n, int l, int r, vector <int> where){
    if(l == r){
        soln[where[0]] = l;
        return;
    }
    string qr = "";
    for(int i=0; i<n; i++) qr += '1';
    for(auto c : where) qr[c] = '0';
    int mid = (l+r)/2;
    vector <int> v1, v2;
    for(auto c : where){
        qr[c] = '1';
        if(check_element(qr)) v1.push_back(c);
        else v2.push_back(c);
        qr[c] = '0';
    }
    do_find(n, l, mid, v1);
    do_find(n, mid+1, r, v2);
}

std::vector<int> restore_permutation(int n, int w, int r) {
    do_add(n, 0, n - 1);
    compile_set();
    vector <int> svi;
    for(int i=0; i<n; i++) svi.push_back(i);
    do_find(n, 0, n - 1, svi);
    vector <int> sln;
    for(int i=0; i<n; i++) sln.push_back(soln[i]);
    return sln;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB n = 8
2 Correct 0 ms 292 KB n = 8
3 Correct 1 ms 288 KB n = 8
4 Correct 1 ms 204 KB n = 8
5 Correct 0 ms 204 KB n = 8
6 Correct 0 ms 204 KB n = 8
7 Correct 1 ms 204 KB n = 8
8 Correct 0 ms 204 KB n = 8
9 Correct 1 ms 204 KB n = 8
10 Correct 0 ms 204 KB n = 8
11 Correct 1 ms 204 KB n = 8
12 Correct 0 ms 204 KB n = 8
13 Correct 0 ms 204 KB n = 8
14 Correct 1 ms 292 KB n = 8
15 Correct 0 ms 292 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB n = 32
2 Correct 1 ms 204 KB n = 32
3 Correct 1 ms 204 KB n = 32
4 Correct 1 ms 204 KB n = 32
5 Correct 1 ms 204 KB n = 32
6 Correct 1 ms 204 KB n = 32
7 Correct 1 ms 204 KB n = 32
8 Correct 1 ms 204 KB n = 32
9 Correct 1 ms 204 KB n = 32
10 Correct 1 ms 204 KB n = 32
11 Correct 1 ms 204 KB n = 32
12 Correct 1 ms 204 KB n = 32
13 Correct 1 ms 204 KB n = 32
14 Correct 1 ms 204 KB n = 32
15 Correct 1 ms 204 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB n = 32
2 Correct 1 ms 204 KB n = 32
3 Correct 1 ms 204 KB n = 32
4 Correct 1 ms 204 KB n = 32
5 Correct 1 ms 204 KB n = 32
6 Correct 1 ms 204 KB n = 32
7 Correct 1 ms 204 KB n = 32
8 Correct 1 ms 204 KB n = 32
9 Correct 1 ms 204 KB n = 32
10 Correct 1 ms 204 KB n = 32
11 Correct 1 ms 204 KB n = 32
12 Correct 1 ms 204 KB n = 32
13 Correct 1 ms 204 KB n = 32
14 Correct 1 ms 204 KB n = 32
15 Correct 1 ms 204 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 2 ms 460 KB n = 128
2 Correct 2 ms 460 KB n = 128
3 Correct 2 ms 460 KB n = 128
4 Correct 2 ms 416 KB n = 128
5 Correct 2 ms 416 KB n = 128
6 Correct 2 ms 460 KB n = 128
7 Correct 2 ms 420 KB n = 128
8 Correct 2 ms 460 KB n = 128
9 Correct 2 ms 460 KB n = 128
10 Correct 2 ms 460 KB n = 128
11 Correct 2 ms 460 KB n = 128
12 Correct 3 ms 460 KB n = 128
13 Correct 2 ms 424 KB n = 128
14 Correct 2 ms 460 KB n = 128
15 Correct 2 ms 460 KB n = 128
# Verdict Execution time Memory Grader output
1 Correct 2 ms 460 KB n = 128
2 Correct 2 ms 460 KB n = 128
3 Correct 2 ms 460 KB n = 128
4 Correct 2 ms 460 KB n = 128
5 Correct 2 ms 460 KB n = 128
6 Correct 2 ms 420 KB n = 128
7 Correct 2 ms 424 KB n = 128
8 Correct 2 ms 460 KB n = 128
9 Correct 2 ms 460 KB n = 128
10 Correct 2 ms 460 KB n = 128
11 Correct 2 ms 460 KB n = 128
12 Correct 2 ms 460 KB n = 128
13 Correct 2 ms 460 KB n = 128
14 Correct 2 ms 460 KB n = 128
15 Correct 2 ms 460 KB n = 128