Submission #1182964

#TimeUsernameProblemLanguageResultExecution timeMemory
1182964NonozeUnscrambling a Messy Bug (IOI16_messy)C++20
100 / 100
1 ms588 KiB
#include "messy.h"
#include <bits/stdc++.h>
#define sz(x) (int)(x).size()
using namespace std;

// 2 1 3 0 -> 3 1 0 2
vector<int> p;

void dq(int l, int r, set<int> &pos) {
	if (l==r) {
		p[l]=*pos.begin();
		return;
	}
	string s(sz(p), '1'); for (auto &u: pos) s[u]='0';
	set<int> sl, sr;
	for (auto &u: pos) {
		s[u]='1';
		if (check_element(s)) {
			sl.insert(u);
		} else sr.insert(u);
		s[u]='0';
	}
	int m=(l+r)/2;
	dq(l, m, sl), dq(m+1, r, sr);
}

vector<int> restore_permutation(int n, int w, int r) {
	for (int val=1; val<n; val*=2) {
		for (int i=0; i<n; i+=val*2) {
			string s(n, '1');
			for (int j=i; j<i+2*val; j++) s[j]='0';
			for (int j=i; j<i+val; j++) {
				s[j]='1';
				add_element(s);
				s[j]='0';
			}
		}
	}
	compile_set();
	set<int> pos; for (int i=0; i<n; i++) pos.insert(i);
	p.resize(n);
	dq(0, n-1, pos);
	vector<int> np(n); for (int i=0; i<n; i++) np[p[i]]=i;
	return np;
}

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