This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |