Submission #755989

#TimeUsernameProblemLanguageResultExecution timeMemory
755989vjudge1Password (RMI18_password)C++17
10 / 100
498 ms412 KiB
#include <bits/stdc++.h> using namespace std; #ifdef LOCAL #include "C:\GCC\debug.h" #else #define debug(...) void(42) #endif int cnt = 0; int query(string s); string guess(int n, int s) { auto Build = [&](vector<char> x) { assert((int) x.size() >= 1 && (int) x.size() <= n); for (auto c : x) { assert(c >= 'a' && c < 'a' + s); } string ret = ""; for (int i = 0; i < (int) x.size(); i++) { ret += x[i]; } return ret; }; deque<char> res; vector<int> freq(s); for (int i = 0; i < s; i++) { vector<char> x; for (int it = 0; it < n; it++) { x.push_back(char(i + 'a')); } freq[i] = query(Build(x)); } for (int pos = n - 1; pos >= 0; pos--) { for (int i = 0; i < s; i++) { if (freq[i] > 0) { vector<char> build; for (int it = 0; it < freq[i]; it++) { build.push_back(char(i + 'a')); } bool work = true; if ((int) build.size() + 1 + (int) res.size() <= n) { for (int j = 0; j < s; j++) { vector<char> tmp; for (auto c : build) { tmp.push_back(c); } tmp.push_back(char(j + 'a')); for (auto c : res) { tmp.push_back(c); } assert((int) tmp.size() >= 1 && (int) tmp.size() <= n); if (query(Build(tmp)) == (int) tmp.size()) { work = false; break; } } } else { for (auto x : build) { res.push_front(x); } string ret = ""; for (int i = 0; i < (int) res.size(); i++) { ret += res[i]; } return ret; } if (work) { freq[i] -= 1; res.push_front(char(i + 'a')); break; } } } } string ret = ""; for (int i = 0; i < (int) res.size(); i++) { ret += res[i]; } return ret; }
#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...