Submission #104001

#TimeUsernameProblemLanguageResultExecution timeMemory
104001hugo_pmUnscrambling a Messy Bug (IOI16_messy)C++17
49 / 100
2 ms432 KiB
#include "messy.h"
#include <bits/stdc++.h>
using namespace std;

#define form2(i, a, b) for (int i = (a); i < (b); ++i)
#define ford2(i, a, b) for (int i = (a-1); i >= b; --i)
#define form(i, n) form2(i, 0, n)
#define ford(i, n) ford2(i, n, 0)

#define chmax(x, v) x = max(x, (v))
#define chmin(x, v) x = min(x, (v))
#define fi first
#define se second

const int INF = (int)(1e9);

typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;

int nbElem, nbAdd, nbCheck;

vector<int> st123()
{
	vector<int> px(nbElem);
	form(i, nbElem) px[i] = i;
	random_shuffle(px.begin(), px.end());

	vector<int> perm(nbElem);
	string s;
	form(i, nbElem) s.push_back('0');
	string curVu = s;

	form(i, nbElem) {
		s[i] = '1';
		add_element(s);
	}
	compile_set();

	form(cherche, nbElem) {
		s = curVu;
		form(rt, nbElem) {
			int teste = px[rt];
			if (curVu[teste] == '1') continue;
			s[teste] = '1';
			if (check_element(s)) { perm[teste] = cherche; curVu[teste] = '1'; break; }
			s[teste] = '0';
		}
	}
	return perm;
}


vector<int> restore_permutation(int n, int w, int r) {
	nbElem = n;
	nbAdd = w;
	nbCheck = r;

	vector<int> p(n);
	form(i, n) p[i] = i;

	if (n <= 32) {
		return st123();
	}

	return p;

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