#include <iostream>
#include <cassert>
#include <vector>
#include <algorithm>
#include <deque>
#include <set>
#include <utility>
#include <array>
using namespace std;
#define ALL(x) x.begin(), x.end()
#define ShinLena cin.tie(nullptr)->sync_with_stdio(false);
using ll = long long;
int m, n, x, y, bl, bt, br;
bool examine(int x, int y)
{
cout << "examine " << x << ' ' << y << '\n' << flush;
char s[6]{0};
cin >> s;
return s[0] == 't';
}
void solution(int x, int y)
{
cout << "solution " << x << ' ' << y << "\n" << flush;
exit(0);
}
void find_border()
{
bl = 0; bt = 0; br = n + 1;
int l = 1, r = x-1;
while (l <= r)
{
int o = (l+r)/2;
if (examine(o, y))
{
int oo = (o+x)/2;
if (examine(oo, y))
{
int ooo = (oo+x)/2;
if (examine(ooo, y)) r = o - 1;
else l = ooo + 1, bl = ooo;
}
else l = oo + 1, bl = oo;
}
else l = o + 1, bl = o;
}
l = x+1, r = n;
while (l <= r)
{
int o = (l+r)/2;
if (examine(o, y))
{
int oo = (x+o)/2;
if (examine(oo, y))
{
int ooo = (oo + x) / 2;
if (examine(ooo, y)) l = o + 1;
else r = ooo - 1, br = ooo;
}
else r = oo - 1, br = oo;
}
else r = o - 1, br = o;
}
m = br - bl - 1;
assert(m%2);
l = 1, r = y - 1;
while (l <= r)
{
int o = (l+r)/2;
if (examine(x, o))
{
int oo = (o+y)/2;
if (examine(x, oo))
{
int ooo = (oo+y)/2;
if (examine(x, ooo)) r = o - 1;
else l = ooo + 1, bt = ooo;
}
else l = oo + 1, bt = oo;
}
else l = o + 1, bt = o;
}
x = bl + 1; y = bt + 1;
assert(examine(x, y));
}
void find_11()
{
for (; x>2*m && examine(x-2*m, y); x-=2*m);
for (; y>2*m && examine(x, y-2*m); y-=2*m);
}
void find_middle()
{
x += 2*m, y += 2*m;
x += m/2, y += m/2;
}
int main()
{
ShinLena;
cin >> n >> x >> y;
find_border();
find_11();
find_middle();
solution(x, y);
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Incorrect |
0 ms |
596 KB |
Incorrect |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
1 ms |
344 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
Output is correct |
2 |
Incorrect |
1 ms |
344 KB |
Incorrect |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
Output is correct |
2 |
Incorrect |
1 ms |
344 KB |
Incorrect |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
344 KB |
Incorrect |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
Output is correct |
2 |
Incorrect |
1 ms |
344 KB |
Incorrect |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
Output is correct |
2 |
Incorrect |
1 ms |
600 KB |
Incorrect |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
1 ms |
452 KB |
Execution killed with signal 6 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
344 KB |
Output is correct |
2 |
Runtime error |
1 ms |
452 KB |
Execution killed with signal 13 |
3 |
Halted |
0 ms |
0 KB |
- |