Submission #969797

#TimeUsernameProblemLanguageResultExecution timeMemory
969797NoMercyAliens (IOI07_aliens)C++14
60 / 100
1 ms692 KiB
#include <bits/stdc++.h> using namespace std; int TIME = clock(); #define file \ freopen("in.txt" , "r" , stdin); \ freopen("out.txt" , "w" , stdout); typedef long long ll; void test_case () { ll n , x , y; cin >> n >> x >> y; auto ask = [&](ll fi , ll se) -> int { cout << "examine " << fi << " " << se << endl; string as; cin >> as; return (as == "true"); }; ll l = 1, r = x , best[4] = {x , y , x , y}; while (l <= r) { ll mid = (l + r) / 2LL; if (ask(mid , y) == true && ask((mid + x) / 2LL , y) == true) { best[0] = mid; r = mid - 1; } else { l = mid + 1; } } l = 1 , r = y; while (l <= r) { ll mid = (l + r) / 2LL; if (ask(x , mid) == true && ask(x , (mid + y) / 2LL) == true) { best[1] = mid; r = mid - 1; } else { l = mid + 1; } } l = x , r = n; while (l <= r) { ll mid = (l + r) / 2LL; if (ask(mid , y) == true && ask((mid + x) / 2LL , y) == true) { best[2] = mid; l = mid + 1; } else { r = mid - 1; } } l = y , r = n; while (l <= r) { ll mid = (l + r) / 2LL; if (ask(x , mid) == true && ask(x , (mid + y) / 2LL) == true) { best[3] = mid; l = mid + 1; } else { r = mid - 1; } } // cout << best[0] << " " << best[1] << " " << best[2] << " " << best[3] << endl; // assert(best[2] - best[0] == best[3] - best[1]); x = (best[0] + best[2]) / 2LL; y = (best[1] + best[3]) / 2LL; ll m = best[3] - best[1] + 1; while (x - m > 0 && y - m > 0) { if (ask(x - m , y - m) == true) { x -= m; y -= m; } else { break; } } while (x - m - m > 0) { if (ask(x - m - m , y) == true) { x -= m * 2LL; } else { break; } } while (y - m - m > 0) { if (ask(x , y - m - m) == true) { y -= m * 2LL; } else { break; } } cout << "solution " << x + m + m << " " << y + m + m << endl; } int32_t main () { // file int t = 1; // cin >> t; while (t --) { test_case(); } cerr << "\nTime elapsed: " << (clock() - TIME) * 1000.0 / CLOCKS_PER_SEC << " ms\n"; return 0; }
#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...