Submission #1326607

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

int N;
string S;
vector<int> P, ans;

void add(int L,int R) {
	if (L==R) return;
	int M = (L+R)/2;
	for (int i=0;i<N;i++) {
		if (L<=i && i<=R) {
			S[i] = '0';
		}
		else {
			S[i] = '1';
		}
	}
	for (int i=L;i<=M;i++) {
		S[i] = '1';
		add_element(S);
		S[i] = '0';
	}
	add(L,M);
	add(M+1,R);
}

void check(int L,int R) {
	if (L == R) return;
	int M = (L+R)/2;
	for (int i=0;i<N;i++) {
		if (L<=i && i<=R) {
			S[P[i]] = '0';
		}
		else {
			S[P[i]] = '1';
		}
	}
	int i=L,j=R;
	while (i<=M&&j>M) {
		S[P[i]] = '1';
		bool B = check_element(S);
		S[P[i]] = '0';
		if (B) {
			i++;
		}
		else {
			swap(P[i],P[j]);
			j--;
		}
	}
	check(L,M);
	check(M+1,R);
}

vector<int> restore_permutation(int n, int w, int r) {
	N = n;
	for (int i=0;i<N;i++) {
		S += '0';
		P.push_back(i);
		ans.push_back(0);
	}
	add(0,N-1);
	compile_set();
	check(0,N-1);
	for (int i=0;i<N;i++) {
		ans[P[i]] = i;
	}
	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...