Submission #23992

# Submission time Handle Problem Language Result Execution time Memory
23992 2017-05-28T17:59:55 Z gs14004 Unscrambling a Messy Bug (IOI16_messy) C++11
100 / 100
3 ms 540 KB
#include "messy.h"
#include <bits/stdc++.h>
using namespace std;

int n, occ[128];

void solve(int s, int e){
    if(s == e) return;
    string str;
    for(int j=0; j<n; j++){
        str.push_back('0');
    }
    for(int j=s; j<=e; j++){
        str[j] = '1';
    }
    int m = (s+e)/2;
    for(int j=m+1; j<=e; j++){
        str[j] = '0';
        add_element(str);
        str[j] = '1';
    }
    solve(s, m);
    solve(m+1, e);
}

void solve2(int s, int e, vector<int> c){
    if(s == e){ 
        occ[c[0]] = s;
        return;
    }
    int m = (s+e)/2;
    string str;
    for(int i=0; i<n; i++){
        str.push_back('0');
    }
    for(auto &i : c){
        str[i] = '1';
    }
    vector<int> l, h;
    for(auto &j : c){
        str[j] = '0';
        if(check_element(str)) h.push_back(j);
        else l.push_back(j);
        str[j] = '1';
    }
    solve2(s, m, l);
    solve2(m+1, e, h);
}

vector<int> restore_permutation(int _n, int w, int r) {
    n = _n;
    solve(0, n-1);
    compile_set();
    vector<int> v;
    for(int i=0; i<n; i++) v.push_back(i);
    solve2(0, n-1, v);
    vector<int> dap;
    for(int i=0; i<n; i++) dap.push_back(occ[i]);
    return dap;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB n = 8
2 Correct 2 ms 256 KB n = 8
3 Correct 2 ms 384 KB n = 8
4 Correct 2 ms 384 KB n = 8
5 Correct 2 ms 256 KB n = 8
6 Correct 2 ms 384 KB n = 8
7 Correct 2 ms 384 KB n = 8
8 Correct 2 ms 256 KB n = 8
9 Correct 2 ms 384 KB n = 8
10 Correct 2 ms 384 KB n = 8
11 Correct 2 ms 384 KB n = 8
12 Correct 2 ms 384 KB n = 8
13 Correct 2 ms 384 KB n = 8
14 Correct 2 ms 384 KB n = 8
15 Correct 2 ms 384 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB n = 32
2 Correct 2 ms 384 KB n = 32
3 Correct 2 ms 384 KB n = 32
4 Correct 2 ms 384 KB n = 32
5 Correct 2 ms 384 KB n = 32
6 Correct 3 ms 384 KB n = 32
7 Correct 2 ms 384 KB n = 32
8 Correct 2 ms 384 KB n = 32
9 Correct 2 ms 384 KB n = 32
10 Correct 2 ms 384 KB n = 32
11 Correct 2 ms 384 KB n = 32
12 Correct 2 ms 384 KB n = 32
13 Correct 2 ms 384 KB n = 32
14 Correct 2 ms 384 KB n = 32
15 Correct 2 ms 384 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB n = 32
2 Correct 2 ms 384 KB n = 32
3 Correct 2 ms 384 KB n = 32
4 Correct 2 ms 384 KB n = 32
5 Correct 2 ms 256 KB n = 32
6 Correct 2 ms 384 KB n = 32
7 Correct 2 ms 384 KB n = 32
8 Correct 2 ms 256 KB n = 32
9 Correct 2 ms 384 KB n = 32
10 Correct 2 ms 384 KB n = 32
11 Correct 2 ms 384 KB n = 32
12 Correct 2 ms 384 KB n = 32
13 Correct 2 ms 384 KB n = 32
14 Correct 2 ms 384 KB n = 32
15 Correct 2 ms 384 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 3 ms 512 KB n = 128
2 Correct 3 ms 512 KB n = 128
3 Correct 3 ms 512 KB n = 128
4 Correct 3 ms 512 KB n = 128
5 Correct 3 ms 512 KB n = 128
6 Correct 3 ms 512 KB n = 128
7 Correct 3 ms 512 KB n = 128
8 Correct 3 ms 512 KB n = 128
9 Correct 3 ms 512 KB n = 128
10 Correct 3 ms 512 KB n = 128
11 Correct 3 ms 512 KB n = 128
12 Correct 3 ms 512 KB n = 128
13 Correct 3 ms 512 KB n = 128
14 Correct 3 ms 512 KB n = 128
15 Correct 3 ms 512 KB n = 128
# Verdict Execution time Memory Grader output
1 Correct 3 ms 512 KB n = 128
2 Correct 3 ms 540 KB n = 128
3 Correct 3 ms 512 KB n = 128
4 Correct 3 ms 512 KB n = 128
5 Correct 3 ms 512 KB n = 128
6 Correct 3 ms 512 KB n = 128
7 Correct 3 ms 512 KB n = 128
8 Correct 3 ms 512 KB n = 128
9 Correct 3 ms 512 KB n = 128
10 Correct 3 ms 512 KB n = 128
11 Correct 3 ms 512 KB n = 128
12 Correct 3 ms 512 KB n = 128
13 Correct 3 ms 512 KB n = 128
14 Correct 3 ms 512 KB n = 128
15 Correct 3 ms 512 KB n = 128