Submission #1208150

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

void add_element(string s) ;
void compile_set() ;
bool check_element(string s) ;
int sz;
vector<int> ans;
void build(int l , int r){
	if(l == r) return ;
	int m = (l + r) / 2;
	for(int i = l;i <= m; ++ i){
		string s = string(sz , '1');
		for(int j = l;j <= r; ++ j) s[j] = '0';
		s[i] = '1';
		add_element(s);
	}
	build(l , m);
	build(m + 1 , r);
}
void devide_conquare(vector<int> v , int l , int r){
	if(l == r){
		ans[v[0]] = l;
		return ;
	}
	vector<int> p , q;
	int m = (l + r) / 2;
	for(int i = l;i <= r; ++ i){
		string s = string(sz , '1');
		for(int j = l;j <= r; ++ j) s[v[j - l]] = '0';
		s[v[i - l]] = '1';
		if(check_element(s)) p.push_back(v[i - l]);
		else q.push_back(v[i - l]);
	}
	devide_conquare(p , l , m);
	devide_conquare(q , m + 1 , r);
}
std::vector<int> restore_permutation(int n, int w, int r) {
	sz = n;
    build(0 , n - 1); 
    compile_set();
    vector<int> v;
	for(int i = 0;i < n; ++ i) v.push_back(i); 
	ans = v;
	devide_conquare(v , 0 , n - 1);
    return ans;
}

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...