Submission #94014

#TimeUsernameProblemLanguageResultExecution timeMemory
94014tincamateiAliens (IOI07_aliens)C++14
0 / 100
3002 ms420 KiB
#include <bits/stdc++.h> using namespace std; bool examine(int l, int c, int n) { string str; if(l < 1 || l > n || c < 1 || c > n) return false; cout << "examine " << l << ' ' << c << endl; cin >> str; return str == "true"; } pair<int, int> getNextWhite(int l, int c, int dl, int dc, int n) { int lg = 0; while(examine(l + dl * (1 << lg), c + dc * (1 << lg), n)) ++lg; int l2 = l + dl * (1 << lg), c2 = c + dc * (1 << lg); while(abs(c2 - c) > 1 || abs(l2 - l) > 1) { int midl, midc; midl = (l + l2) / 2; midc = (c + c2) / 2; if(examine(midl, midc, n)) { l = midl; c = midc; } else { l2 = midl; c2 = midc; } } return make_pair(l2, c2); } int main() { int n, x, y, m; int maxx, maxy, minx, miny; pair<int, int> lW, rW, dW; cin >> n >> x >> y; lW = getNextWhite(x, y, 0, -1, n); rW = getNextWhite(x, y, 0, 1, n); dW = getNextWhite(x, y, 1, 0, n); m = rW.second - lW.second - 1; x = (lW.second + rW.second) / 2; y = (dW.first - m / 2 - 1); maxx = maxy = -(1 << 30); minx = miny = 1 << 30; for(int i = -4; i <= 4; ++i) for(int j = -4; j <= 4; ++j) if(examine(x + i * m, y + j * m, n)) { maxx = max(maxx, x + i * m); maxy = max(maxy, y + j * m); minx = min(minx, x + i * m); miny = min(miny, y + j * m); } cout << "solution " << (minx + maxx) / 2 << ' ' << (miny + maxy) / 2 << endl; return 0; } /* 1 1 1 1 1 1 1 1 1 1 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 X X X X X X X X X 3 X X X X X X X X X 4 X X X X X X X X X 5 X X X X X X 6 X X X X X X 7 X X X X X X 8 X X X X X X X X X 9 X X X X X X X X X 10 X X X X X X X X X 11 X X X X X X 12 X X X X X X 13 X X X X X X 14 X X X X X X X X X 15 X X X X X X X X X 16 X X X X X X X X X 17 18 */
#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...
#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...