Submission #239601

# Submission time Handle Problem Language Result Execution time Memory
239601 2020-06-16T15:45:55 Z nicolaalexandra Unscrambling a Messy Bug (IOI16_messy) C++14
100 / 100
7 ms 564 KB
#include <bits/stdc++.h>
#include "messy.h"
#define DIM 300
using namespace std;

string a[DIM];
int k,n,w,r,pas;
int p[DIM],v[DIM];
vector <int> sol;

/*void add_element(string s){
    a[++k] = s;
}

void compile_set(){
    for (int i=1;i<=k;i++){
        string s = "";
        for (int j=0;j<n;j++)
            s += a[i][p[j]];
        a[i] = s;
    }
}

int check_element(string s){
    pas++;
    for (int i=1;i<=k;i++)
        if (a[i] == s)
            return 1;
    return 0;
}*/

void add (int st, int dr){
    if (st == dr)
        return;
    int mid = (st+dr)>>1;

    string s = "";
    for (int i=0;i<n;i++){
        if (i < st || i > dr)
            s += "1";
        else s += "0";
    }

    for (int i=st;i<=mid;i++){
        s[i] = '1';
        add_element(s);
        s[i] = '0';
    }

    add (st,mid);
    add (mid+1,dr);

}

void solve (string s, int st, int dr){
    if (st == dr){
        for (int i=0;i<n;i++){
            if (s[i] == '0'){
                sol[i] = st;
                break;
            }}
        return;
    }

    int mid = (st+dr)>>1;

    vector <int> poz,poz2;
    for (int i=0;i<=n-1;i++){
        if (s[i] == '1')
            continue;
        s[i] = '1';
        if (check_element(s) == 0)
            poz.push_back(i);
        else poz2.push_back(i);

        s[i] = '0';
    }

    for (auto it : poz)
        s[it] = '1';

    solve (s,st,mid);

    for (auto it : poz)
        s[it] = '0';
    for (auto it : poz2)
        s[it] = '1';

    solve (s,mid+1,dr);

}

vector<int> restore_permutation (int N, int w, int r){
    int i;
    n = N;

    add (0,n-1);

    compile_set();

    string s = "";
    for (i=0;i<n;i++){
        sol.push_back(0);
        s += "0";
    }

    solve (s,0,n-1);

    return sol;
}
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB n = 8
2 Correct 5 ms 384 KB n = 8
3 Correct 5 ms 384 KB n = 8
4 Correct 5 ms 384 KB n = 8
5 Correct 4 ms 384 KB n = 8
6 Correct 5 ms 384 KB n = 8
7 Correct 5 ms 384 KB n = 8
8 Correct 4 ms 384 KB n = 8
9 Correct 4 ms 384 KB n = 8
10 Correct 5 ms 384 KB n = 8
11 Correct 5 ms 384 KB n = 8
12 Correct 5 ms 384 KB n = 8
13 Correct 4 ms 384 KB n = 8
14 Correct 4 ms 384 KB n = 8
15 Correct 4 ms 384 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB n = 32
2 Correct 5 ms 384 KB n = 32
3 Correct 5 ms 384 KB n = 32
4 Correct 5 ms 384 KB n = 32
5 Correct 5 ms 384 KB n = 32
6 Correct 5 ms 384 KB n = 32
7 Correct 5 ms 384 KB n = 32
8 Correct 5 ms 384 KB n = 32
9 Correct 5 ms 384 KB n = 32
10 Correct 5 ms 384 KB n = 32
11 Correct 5 ms 384 KB n = 32
12 Correct 5 ms 384 KB n = 32
13 Correct 5 ms 384 KB n = 32
14 Correct 5 ms 384 KB n = 32
15 Correct 5 ms 384 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB n = 32
2 Correct 5 ms 384 KB n = 32
3 Correct 5 ms 384 KB n = 32
4 Correct 5 ms 384 KB n = 32
5 Correct 5 ms 384 KB n = 32
6 Correct 5 ms 384 KB n = 32
7 Correct 5 ms 384 KB n = 32
8 Correct 5 ms 384 KB n = 32
9 Correct 5 ms 384 KB n = 32
10 Correct 5 ms 384 KB n = 32
11 Correct 5 ms 384 KB n = 32
12 Correct 5 ms 384 KB n = 32
13 Correct 5 ms 384 KB n = 32
14 Correct 5 ms 384 KB n = 32
15 Correct 5 ms 384 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 6 ms 512 KB n = 128
2 Correct 7 ms 512 KB n = 128
3 Correct 6 ms 512 KB n = 128
4 Correct 6 ms 512 KB n = 128
5 Correct 6 ms 512 KB n = 128
6 Correct 6 ms 512 KB n = 128
7 Correct 6 ms 512 KB n = 128
8 Correct 6 ms 512 KB n = 128
9 Correct 6 ms 512 KB n = 128
10 Correct 6 ms 512 KB n = 128
11 Correct 6 ms 512 KB n = 128
12 Correct 6 ms 512 KB n = 128
13 Correct 6 ms 512 KB n = 128
14 Correct 6 ms 512 KB n = 128
15 Correct 6 ms 512 KB n = 128
# Verdict Execution time Memory Grader output
1 Correct 7 ms 564 KB n = 128
2 Correct 6 ms 512 KB n = 128
3 Correct 6 ms 512 KB n = 128
4 Correct 6 ms 512 KB n = 128
5 Correct 6 ms 512 KB n = 128
6 Correct 6 ms 512 KB n = 128
7 Correct 6 ms 512 KB n = 128
8 Correct 6 ms 512 KB n = 128
9 Correct 6 ms 512 KB n = 128
10 Correct 6 ms 512 KB n = 128
11 Correct 6 ms 512 KB n = 128
12 Correct 6 ms 512 KB n = 128
13 Correct 6 ms 512 KB n = 128
14 Correct 6 ms 512 KB n = 128
15 Correct 6 ms 512 KB n = 128