Submission #201148

#TimeUsernameProblemLanguageResultExecution timeMemory
201148Atill83Password (RMI18_password)C++14
50 / 100
3065 ms504 KiB
#include <bits/stdc++.h> #define ff first #define ss second using namespace std; int query(string str); pair<int, char> freq[30]; string solve(int l, int r){ if(l == r){ string a; for(int i = 0; i < freq[l].ff; i++) a += freq[l].ss; return a; } int m = (l + r) / 2; string a = solve(l, m), b = solve(m + 1, r); string ans; reverse(a.begin(), a.end()); reverse(b.begin(), b.end()); while(a.length() && b.length()){ string soru = ans + a.back(); for(auto i = b.rbegin(); i < b.rend(); i++) soru = soru + (*i); int quer = query(soru); if(quer == soru.length()){ ans += a.back(); a.pop_back(); }else{ ans += b.back(); b.pop_back(); } } reverse(a.begin(), a.end()); reverse(b.begin(), b.end()); ans = ans + a; ans = ans + b; return ans; } string guess(int n, int s){ int sum = 0; for(int i = 0; i < s - 1; i ++){ string que; for(int j = 0; j < n; j++) que += (char)('a' + i); freq[i].ff = query(que); sum += freq[i].ff; freq[i].ss = (char)('a' + i); } freq[s - 1].ff = n - sum; freq[s - 1].ss = (char)('a' + s - 1); sort(freq, freq + s); return solve(0, s - 1); }

Compilation message (stderr)

password.cpp: In function 'std::__cxx11::string solve(int, int)':
password.cpp:25:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if(quer == soru.length()){
            ~~~~~^~~~~~~~~~~~~~~~
#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...