Submission #836454

#TimeUsernameProblemLanguageResultExecution timeMemory
836454TB_Unscrambling a Messy Bug (IOI16_messy)C++17
49 / 100
1 ms384 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define deb(x) cout << #x << " = " << x << endl #define deb2(x, y) cout << #x << " = " << x << ", " << #y << " = " << y << endl #define fo(i, n) for(ll i = 0; i<(n); i++) #define pb push_back #define F first #define S second typedef vector<int> vi; typedef vector<vi> vvi; typedef vector<ll> vl; typedef vector<vl> vvl; typedef pair<ll, ll> pl; typedef vector<pl> vpl; void add_element(std::string x); bool check_element(std::string x); void compile_set(); std::vector<int> restore_permutation(int n, int w, int r) { string toAdd(n, '0'); fo(i, n){ toAdd[n-1-i] = '1'; add_element(toAdd); } compile_set(); string current(n, '0'); mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count()); vi ans(n, -1); fo(i, n){ vi seen(n, 0); while(true){ int pos = rnd()%n; if(current[pos] == '1' || seen[pos]) continue; seen[pos] = 1; current[pos] = '1'; if(check_element(current)){ ans[pos] = n-1-i; break; } current[pos] = '0'; } } return ans; } // namespace helper { // set<string> set_; // bool compiled = false; // int n; // vector<int> p; // int w; // int r; // int read_int() { // int x; // cin >> x; // return x; // } // } // using namespace helper; // // A convenience function. // int get_p(int i) { // int ret = p[i]; // return ret; // } // int main() { // n = read_int(); // w = read_int(); // r = read_int(); // p = vector<int>(n); // for (int i = 0; i < n; i++) { // p[i] = read_int(); // } // vector<int> answer = restore_permutation(n, w, r); // if (answer.size() != n) { // printf("WA\n"); // return 0; // } // printf("%d", answer[0]); // for (int i = 1; i < n; i++) { // printf(" %d", answer[i]); // } // printf("\n"); // return 0; // } // void wa() { // printf("WA\n"); // exit(0); // } // bool check(const string& x) { // if ((int)x.length() != n) { // return false; // } // for (int i = 0; i < n; i++) { // if (x[i] != '0' && x[i] != '1') { // return false; // } // } // return true; // } // void add_element(string x) { // if (--w < 0 || compiled || !check(x)) { // wa(); // } // set_.insert(x); // } // bool check_element(string x) { // if (--r < 0 || !compiled || !check(x)) { // wa(); // } // return set_.count(x); // } // void compile_set() { // if (compiled) { // wa(); // } // compiled = true; // set<string> compiledSet; // string compiledElement = string(n, ' '); // for (set<string>::iterator it = set_.begin(); it != set_.end(); it++) { // string s = *it; // for (int i = 0; i < n; i++) { // compiledElement[i] = s[get_p(i)]; // } // compiledSet.insert(compiledElement); // } // set_ = compiledSet; // }
#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...