Submission #694829

# Submission time Handle Problem Language Result Execution time Memory
694829 2023-02-04T09:43:27 Z jiahng Unscrambling a Messy Bug (IOI16_messy) C++14
100 / 100
3 ms 496 KB
#include <vector>
#include "messy.h"
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int,int> pi;
typedef vector <int> vi;
typedef vector <pi> vpi;
typedef pair<pi, ll> pii;
typedef set <ll> si;
typedef long double ld;
#define f first
#define s second
#define mp make_pair
#define FOR(i,s,e) for(int i=s;i<=int(e);++i)
#define DEC(i,s,e) for(int i=s;i>=int(e);--i)
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define lbd(x, y) lower_bound(all(x), y)
#define ubd(x, y) upper_bound(all(x), y)
#define aFOR(i,x) for (auto i: x)
#define mem(x,i) memset(x,i,sizeof x)
#define fast ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define maxn 200010
#define INF (ll)1e9
#define MOD 1000000007
typedef pair <vi, int> pvi;
typedef pair <int,pi> ipi;
typedef vector <pii> vpii;


int N;
vi ans;
void dnc(int l,int r){
    int m = (l + r) >> 1;

    if (l == r) return;
    FOR(k,l,m){
        string query = "";
        FOR(i,0,N-1){
            if (l <= i && i <= r){
                if (k == i) query += '1';
                else query += '0';
            }else query += '1';
        }
        add_element(query);
    }
    dnc(l,m); dnc(m+1,r);
}
void dnc_query(int l,int r, vi &v){
    if (l == r){
        ans[v[0]] = l; return;
    }
    int m = (l + r) >> 1;
    vi le,ri;
    aFOR(i, v){
        string query = "";
        FOR(j,0,N-1) query += '1';
        aFOR(j, v) if (j != i) query[j] = '0';
        if (check_element(query)) le.pb(i);
        else ri.pb(i);
    } 

    dnc_query(l,m,le); dnc_query(m+1,r,ri);
}

std::vector<int> restore_permutation(int n, int w, int r) {
    N = n;
    dnc(0,n-1);
    vi v; FOR(i,0,n-1) v.pb(i);
    compile_set();

    ans = vi(N);
    dnc_query(0,n-1,v);

    return ans;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB n = 8
2 Correct 0 ms 212 KB n = 8
3 Correct 1 ms 212 KB n = 8
4 Correct 1 ms 212 KB n = 8
5 Correct 1 ms 212 KB n = 8
6 Correct 1 ms 212 KB n = 8
7 Correct 0 ms 300 KB n = 8
8 Correct 1 ms 296 KB n = 8
9 Correct 0 ms 212 KB n = 8
10 Correct 0 ms 300 KB n = 8
11 Correct 0 ms 212 KB n = 8
12 Correct 0 ms 212 KB n = 8
13 Correct 1 ms 212 KB n = 8
14 Correct 1 ms 212 KB n = 8
15 Correct 1 ms 340 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 300 KB n = 32
4 Correct 1 ms 300 KB n = 32
5 Correct 1 ms 304 KB n = 32
6 Correct 1 ms 212 KB n = 32
7 Correct 1 ms 212 KB n = 32
8 Correct 1 ms 304 KB n = 32
9 Correct 1 ms 212 KB n = 32
10 Correct 1 ms 212 KB n = 32
11 Correct 1 ms 212 KB n = 32
12 Correct 1 ms 244 KB n = 32
13 Correct 1 ms 212 KB n = 32
14 Correct 1 ms 300 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 300 KB n = 32
4 Correct 1 ms 212 KB n = 32
5 Correct 1 ms 296 KB n = 32
6 Correct 1 ms 212 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 212 KB n = 32
11 Correct 1 ms 212 KB n = 32
12 Correct 1 ms 300 KB n = 32
13 Correct 1 ms 212 KB n = 32
14 Correct 1 ms 212 KB n = 32
15 Correct 1 ms 300 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 3 ms 468 KB n = 128
2 Correct 3 ms 468 KB n = 128
3 Correct 2 ms 468 KB n = 128
4 Correct 2 ms 468 KB n = 128
5 Correct 2 ms 468 KB n = 128
6 Correct 2 ms 468 KB n = 128
7 Correct 3 ms 468 KB n = 128
8 Correct 3 ms 428 KB n = 128
9 Correct 3 ms 400 KB n = 128
10 Correct 3 ms 468 KB n = 128
11 Correct 3 ms 468 KB n = 128
12 Correct 3 ms 468 KB n = 128
13 Correct 3 ms 468 KB n = 128
14 Correct 3 ms 428 KB n = 128
15 Correct 2 ms 468 KB n = 128
# Verdict Execution time Memory Grader output
1 Correct 3 ms 480 KB n = 128
2 Correct 2 ms 468 KB n = 128
3 Correct 3 ms 468 KB n = 128
4 Correct 3 ms 468 KB n = 128
5 Correct 3 ms 496 KB n = 128
6 Correct 2 ms 468 KB n = 128
7 Correct 3 ms 468 KB n = 128
8 Correct 2 ms 468 KB n = 128
9 Correct 3 ms 468 KB n = 128
10 Correct 2 ms 468 KB n = 128
11 Correct 3 ms 468 KB n = 128
12 Correct 2 ms 468 KB n = 128
13 Correct 3 ms 468 KB n = 128
14 Correct 3 ms 428 KB n = 128
15 Correct 3 ms 468 KB n = 128