Submission #373679

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

bool on(int mask, int i) { return (mask&(1 << i)) > 0; }

vector<int> restore_permutation(int n, int w, int r) {
	if(n == 8) {
		// caso brute de read
		vector<int> p(n);
		string s = "00000000";
		for(int i = 0; i < n; i++)
			s[i] = '1', add_element(s);
		compile_set();
		vector<int> masks(n), mark(n);
		for(int mask = 0; mask < (1 << n); mask++) {
			for(int i = 0; i < n; i++)
				s[i] = on(mask, i)?'1':'0';
			int c = __builtin_popcount(mask);
			if(check_element(s)) masks[c-1] = mask;
		}
		for(int i = 0; i < n; i++) {
			// printf("%d\n", masks[i]);
			// bitset<8> b(masks[i]);
			// cout << b << endl;
			for(int j = 0; j < n; j++)
				if(on(masks[i], j) && !mark[j])
					mark[j] = 1, p[i] = j;
		}
		vector<int> ans(n);
		for(int i = 0; i < n; i++)
			ans[p[i]] = i;
		return ans;
	}
	assert(n > 8);
	return vector<int>(0);
}
#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...