# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
755844 | 2023-06-10T16:43:53 Z | vjudge1 | Password (RMI18_password) | C++17 | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; string st; int k; string guess(int n, int s) { string S(n, 'a'); int freq[s], used[s]{0}; vector<int> p; for(int l = 0; l < s; l++) { for(int i = 0; i < n; i++) S[i] = char(l + 'a'); freq[l] = query(S); if(freq[l] > 0) p.push_back(l); } S = ""; for(int l = 0; l < n; l++) { S.push_back('a'); for(int i = 0; i < s; i++) { if(used[i] == freq[i]) continue; S[l] = char(i + 'a'); if(l < n - 1) { used[i]++; int cnt = 0, tr = 0; for(int j = 0; j < s; j++) { if(used[j] == freq[j]) continue; if(cnt < tr) { tr++; continue; } tr++; for(int e = used[j] + 1; e <= freq[j]; e++) S.push_back(char(j + 'a')); int R = query(S); R -= l; cnt += (R == 1 + freq[j] - used[j]); for(int e = used[j] + 1; e <= freq[j]; e++) S.pop_back(); } used[i]--; if(cnt == tr){ used[i]++; break; } } else { int K = query(S); if(K == n) break; } } } return S; }