Submission #535441

# Submission time Handle Problem Language Result Execution time Memory
535441 2022-03-10T09:24:54 Z mario05092929 Unscrambling a Messy Bug (IOI16_messy) C++14
100 / 100
20 ms 468 KB
#include "messy.h"
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef long long ll;
typedef pair <ll,ll> pi;
typedef vector <int> vec;
const ll INF = 1e18;
int n;
vec ans;

void build(int l,int r) {
    if(l == r) return;
    int mid = (l + r) >> 1;
    string p;
    for(int i = 0;i < l;i++) p += "1";
    for(int i = l;i <= r;i++) p += "0";
    for(int i = r+1;i < n;i++) p += "1";
    for(int i = l;i <= mid;i++) {
        p[i] = '1';
        //cout << p << '\n';
        add_element(p);
        p[i] = '0';
    }
    build(l,mid), build(mid+1,r);
}

void go(vec x,int l,int r) {
    if(l == r) {
        ans[x[0]] = l; return;
    }
    string p;
    for(int i = 0;i < n;i++) p += "1";
    for(int i : x) p[i] = '0';
    vec ne[2];
    for(int i : x) {
        p[i] = '1';
        ne[(int)check_element(p)].push_back(i);
        p[i] = '0';
    }
    int mid = (l + r) >> 1;
    go(ne[1],l,mid), go(ne[0],mid+1,r);
}

vec restore_permutation(int N,int w,int r) {
    n = N;
    build(0,n-1);
    compile_set();
    ans.resize(n);
    vec tmp;
    for(int i = 0;i < n;i++) tmp.push_back(i);
    go(tmp,0,n-1);
    return ans;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB n = 8
2 Correct 1 ms 296 KB n = 8
3 Correct 1 ms 212 KB n = 8
4 Correct 1 ms 304 KB n = 8
5 Correct 1 ms 212 KB n = 8
6 Correct 1 ms 212 KB n = 8
7 Correct 1 ms 296 KB n = 8
8 Correct 1 ms 212 KB n = 8
9 Correct 1 ms 212 KB n = 8
10 Correct 1 ms 304 KB n = 8
11 Correct 1 ms 212 KB n = 8
12 Correct 1 ms 212 KB n = 8
13 Correct 1 ms 212 KB n = 8
14 Correct 1 ms 300 KB n = 8
15 Correct 1 ms 212 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB n = 32
2 Correct 1 ms 212 KB n = 32
3 Correct 1 ms 212 KB n = 32
4 Correct 1 ms 212 KB n = 32
5 Correct 1 ms 212 KB n = 32
6 Correct 2 ms 304 KB n = 32
7 Correct 1 ms 212 KB n = 32
8 Correct 1 ms 212 KB n = 32
9 Correct 1 ms 212 KB n = 32
10 Correct 1 ms 300 KB n = 32
11 Correct 1 ms 212 KB n = 32
12 Correct 1 ms 212 KB n = 32
13 Correct 1 ms 212 KB n = 32
14 Correct 1 ms 212 KB n = 32
15 Correct 1 ms 212 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB n = 32
2 Correct 1 ms 212 KB n = 32
3 Correct 1 ms 212 KB n = 32
4 Correct 1 ms 212 KB n = 32
5 Correct 1 ms 296 KB n = 32
6 Correct 1 ms 300 KB n = 32
7 Correct 1 ms 212 KB n = 32
8 Correct 1 ms 212 KB n = 32
9 Correct 1 ms 220 KB n = 32
10 Correct 1 ms 212 KB n = 32
11 Correct 1 ms 216 KB n = 32
12 Correct 1 ms 212 KB n = 32
13 Correct 1 ms 212 KB n = 32
14 Correct 1 ms 212 KB n = 32
15 Correct 1 ms 212 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 2 ms 424 KB n = 128
2 Correct 20 ms 428 KB n = 128
3 Correct 2 ms 468 KB n = 128
4 Correct 2 ms 428 KB n = 128
5 Correct 2 ms 468 KB n = 128
6 Correct 2 ms 468 KB n = 128
7 Correct 2 ms 424 KB n = 128
8 Correct 2 ms 468 KB n = 128
9 Correct 2 ms 468 KB n = 128
10 Correct 2 ms 468 KB n = 128
11 Correct 2 ms 468 KB n = 128
12 Correct 2 ms 468 KB n = 128
13 Correct 2 ms 468 KB n = 128
14 Correct 2 ms 468 KB n = 128
15 Correct 2 ms 468 KB n = 128
# Verdict Execution time Memory Grader output
1 Correct 2 ms 428 KB n = 128
2 Correct 2 ms 468 KB n = 128
3 Correct 2 ms 432 KB n = 128
4 Correct 2 ms 468 KB n = 128
5 Correct 2 ms 468 KB n = 128
6 Correct 2 ms 428 KB n = 128
7 Correct 2 ms 468 KB n = 128
8 Correct 2 ms 428 KB n = 128
9 Correct 2 ms 424 KB n = 128
10 Correct 2 ms 468 KB n = 128
11 Correct 2 ms 468 KB n = 128
12 Correct 3 ms 468 KB n = 128
13 Correct 3 ms 468 KB n = 128
14 Correct 2 ms 468 KB n = 128
15 Correct 2 ms 468 KB n = 128