# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
678881 |
2023-01-06T20:24:25 Z |
Hacv16 |
Aliens (IOI07_aliens) |
C++17 |
|
0 ms |
0 KB |
#include<bits/stdc++.h>
using namespace std;
const int MAX = 1e6 + 15;
int n, x, y, m, numblock;
bool query(int x, int y){
cout << "examine " << x << ' ' << y << '\n'; cout.flush();
string ans; cin >> ans; return (ans == "true");
}
bool check(int x){ return x > 0 && x < n ;}
int main(){
cin >> n >> x >> y;
int up = y, down = y;
while(check(up + 1) && query(x, up + 1)) up++;
while(check(down - 1) && query(x, down - 1)) down--;
m = up - down + 1;
while(x - 1 > 0 && query(x - 1, up)) x--;
int l = 0, r = 3 * n / m, curx = x, cury = up, jump = 0;
//Pula diagonal
while(l <= r){
int mid = (l + r) >> 1;
int nx = curx + m * mid, ny = cury + m * mid;
if(!check(nx) || !check(ny)){ r = mid - 1; continue; }
if(query(nx, ny)) l = mid + 1, jump = mid;
else r = mid - 1;
}
curx += jump * m;
cury += jump * m;
//cerr << curx << ' ' << cury << '\n';
l = 0, r = ((n + m - 1)/ m), jump = 0;
//Pula cima
while(l <= r){
int mid = (l + r) >> 1;
int ny = cury + m * (2 * mid);
if(!check(ny)) { r = mid - 1; continue; }
if(query(curx, ny)) l = mid + 1, jump = 2 * mid;
else r = mid - 1;
}
cury += jump * m;
//Pula esquerda
l = 0, r = ((n + m - 1)/ m), jump = 0;
while(l <= r){
int mid = (l + r) >> 1;
int nx = curx - m * (2 * mid);
if(!check(nx)){ r = mid - 1; continue; }
if(query(nx, cury)) l = mid + 1, jump = 2 * mid;
else r = mid - 1;
}
curx -= jump * m;
//move to center of current block
curx += (m - 1) / 2;
cury -= (m - 1) / 2;
//move to center block
l = 0, r = ((n + m - 1) / m), jump = 0;
while(l <= r){
int mid = (l + r) >> 1;
int nx = curx + m * (2 * mid);
if(!check(nx)){ r = mid - 1; continue; }
if(query(nx, cury)) l = mid + 1, jump = 2 * mid;
else r = mid - 1;
}
numblock = jump + 1;
curx += ((numblock - 1) / 2) * m;
cury -= ((numblock - 1) / 2) * m;
cout << "solution " curx << ' ' << cury << '\n';
cout.flush();
return 0;
}
Compilation message
aliens.cpp: In function 'int main()':
aliens.cpp:88:24: error: expected ';' before 'curx'
88 | cout << "solution " curx << ' ' << cury << '\n';
| ^~~~~
| ;