Submission #1303174

#TimeUsernameProblemLanguageResultExecution timeMemory
1303174hssaan_arifUnscrambling a Messy Bug (IOI16_messy)C++20
100 / 100
2 ms584 KiB
#include "messy.h"
#include <bits/stdc++.h>
using namespace std;

#define endl "\n"
#define pb push_back
// #define int long long
#define fi first
#define se second

const int N = 3e5 + 5, M = 1e9 + 7, LG = 20;

int n , A[N] , w , r;
vector<int> P;

void add(int se , int e , string s){

    if (se + 1 == e){
        return;
    }

    for (int i=0 ; i<n ; i++){
        if (se <= i && i < e){
            s[i] = '0';
        }else{
            s[i] = '1';
        }
    }

    int mid = (e-se)/2;

    for (int i=0 ; i<n ; i++){
        if (!mid) break;

        if (s[i] == '0'){
            s[i] = '1';
            add_element(s);
            s[i] = '0';
            mid--;
        }
    }

    mid = (se+e)/2;

    add(se , mid , s);
    add(mid , e , s);
}

void get(int se , int e , string s){

    if (se + 1 == e){
        for (int i=0 ; i<n ; i++){
            if (s[i] == '0'){
                P[i] = se;
                return;
            }
        }
    }

    int mid = (e-se)/2;

    vector<int> lc , rc;

    for (int i=0 ; i<n ; i++){
        if (s[i] == '0'){
            s[i] = '1';

            bool x = check_element(s);
            

            if (x){
                lc.pb(i);
            }else{
                rc.pb(i);
            }

            s[i] = '0';
        }
    }

    mid = (se+e)/2;
    
    for (int i : rc){
        s[i] = '1';
    }

    get(se , mid , s);

    for (int i : rc){
        s[i] = '0';
    }

    for (int i : lc){
        s[i] = '1';
    }

    get(mid , e , s);
}

vector<int> restore_permutation(int N, int w, int r) {
    n = N;
    P.resize(n , 0);
    string s = "" , t = "";
    for (int i=0 ; i<n ; i++){
        s += '0';
        t += '0';
    }
    add(0 , n , s);
    compile_set();
    get(0 , n , t);
    return P;    
}

// signed main(){
//     cin >> n >> w >> r;
//     restore_permutation(n,w,r);
// }

Compilation message (stderr)

messy.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
messy_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...