Submission #660485

#TimeUsernameProblemLanguageResultExecution timeMemory
660485angelo_torresPassword (RMI18_password)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #define sz(v) (int) v.size() #define ff first #define ss second using namespace std; typedef pair<int,int> ii; int cn[26]; vector<int> a[26]; vector<ii> rn = {{0,7},{8,16},{17,25}}; deque<pair<int,char>> gr[3]; char ans[5005]; // int query(string q); int query(string s){ cout << s << endl; int tr; cin >> tr; return tr; } string guess(int n,int s){ // [0,7] // [8,16] // [17,25] for(auto [l,r] : rn){ for(int i = l; i <= r; ++i){ for(int j = l; j <= r; ++j){ if(i == j) continue; char x = (char) ('a'+i), y = (char) ('a'+j); string tr = ""; for(int k = 1; k <= n; ++k) tr.push_back(y); for(int k = 1; k <= n; ++k){ tr[k-1] = x; int vl = query(tr); if(vl < k) break; if(sz(a[i]) < k) a[i].push_back(vl-k); else a[i][k-1] += (vl-k); } } } } for(int i = 0; i < 26; ++i) cn[i] = sz(a[i]); for(int i = 0; i < 26; ++i){ for(int j = 0; j < sz(a[i]); ++j) a[i][j] += (sz(a[i])-j-1); } for(int i = 0; i < 3; ++i){ int l = rn[i].ff, r = rn[i].ss; for(int j = l; j <= r; ++j){ for(auto it : a[j]) gr[i].push_back({it,((char) ('a'+j))}); } sort(gr[i].rbegin(),gr[i].rend()); // for(auto it : gr[i]) cout << it.ss << " "; // cout << endl; } for(int i = n; i >= 1; --i){ vector<int> po; for(int j = 0; j < 3; ++j){ if(sz(gr[j]) > 0 && gr[j].back().ff == n-i) po.push_back(j); } int rp = -1; if(sz(po) == 1) rp = po[0]; if(sz(po) == 2){ int i1 = po[0], i2 = po[1]; string ft = ""; for(auto it : gr[i1]) ft.push_back(it.ss); ft.push_back(gr[i2].back().ss); int vl = query(ft); if(vl == sz(ft)) rp = i2; else rp = i1; } if(sz(po) == 3){ int i1 = po[0], i2 = po[1], i3 = po[2]; string ft = ""; for(auto it : gr[i1]) ft.push_back(it.ss); ft.push_back(gr[i2].back().ss); int vl = query(ft); if(vl == sz(ft)) rp = i2; else rp = i1; ft = ""; for(auto it : gr[rp]) ft.push_back(it.ss); ft.push_back(gr[i3].back().ss); vl = query(ft); if(vl == sz(ft)) rp = i3; } ans[i] = gr[rp].back().ss; gr[rp].pop_back(); for(int i = 0; i < 3; ++i) for(auto &it : gr[i]) it.ff++; } string tt = ""; for(int i = 1; i <= n; ++i) tt.push_back(ans[i]); return tt; } int main(){ int n,s; cin >> n >> s; cout << guess(n,s) << endl; return 0; }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccggWMfY.o: in function `query(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
grader.cpp:(.text+0x80): multiple definition of `query(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'; /tmp/ccUo48WZ.o:password.cpp:(.text+0x110): first defined here
/usr/bin/ld: /tmp/ccggWMfY.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccUo48WZ.o:password.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status