#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
struct Point { ll x, y; };
ll N, M;
Point S;
bool query(Point p)
{
if(!(1<=p.x && p.x<=N && 1<=p.y && p.y<=N)) return false;
printf("examine %d %d\n", p.x, p.y);
fflush(stdout);
char t[10];
scanf("%s", t);
return t[0]=='t';
}
void answer(Point p)
{
printf("solution %d %d\n", p.x, p.y);
fflush(stdout);
exit(0);
}
int main()
{
ll i, j;
scanf("%lld%lld%lld", &N, &S.x, &S.y);
ll l, r;
ll lo=S.x, hi=N+1;
while(lo+1<hi)
{
ll mid=lo+hi>>1;
if(query({mid, S.y})) lo=mid;
else hi=mid;
}
r=lo;
lo=0, hi=S.x;
while(lo+1<hi)
{
ll mid=lo+hi>>1;
if(query({mid, S.y})) hi=mid;
else lo=mid;
}
l=hi;
if(!query({l+r>>1, S.y})) M=(r-l+1)/3;
else
{
if((r-l+1)%5==0 && !query({l+(r-l+1)/5, S.y})) M=(r-l+1)/5;
else M=r-l+1;
}
lo=S.x, hi=S.x+M;
while(lo+1<hi)
{
ll mid=lo+hi>>1;
if(query({mid, S.y})) lo=mid;
else hi=mid;
}
r=lo; l=r-M+1; S.x=(l+r)/2;
lo=S.y, hi=S.y+M;
while(lo+1<hi)
{
ll mid=lo+hi>>1;
if(query({S.x, mid})) lo=mid;
else hi=mid;
}
r=lo; l=r-M+1; S.y=(l+r)/2;
int p1, p2, p3, p4;
p1=query({S.x, S.y+M+M});
p2=query({S.x+M+M, S.y});
p3=query({S.x, S.y-M-M});
p4=query({S.x-M-M, S.y});
if(p1 && p2 && p3 && p4) answer({S.x, S.y});
if(p1 && p2 && p3 && !p4) answer({S.x+M+M, S.y});
if(!p1 && p2 && p3 && p4) answer({S.x, S.y-M-M});
if(p1 && !p2 && p3 && p4) answer({S.x-M-M, S.y});
if(p1 && p2 && !p3 && p4) answer({S.x, S.y+M+M});
if(p1 && p2)
{
if(query({S.x-M, S.y-M})) answer({S.x+M, S.y+M});
else answer({S.x+M+M, S.y+M+M});
}
if(p2 && p3)
{
if(query({S.x-M, S.y+M})) answer({S.x+M, S.y-M});
else answer({S.x+M+M, S.y-M-M});
}
if(p3 && p4)
{
if(query({S.x+M, S.y+M})) answer({S.x-M, S.y-M});
else answer({S.x-M-M, S.y-M-M});
}
if(p4 && p1)
{
if(query({S.x+M, S.y-M})) answer({S.x-M, S.y+M});
else answer({S.x-M-M, S.y+M+M});
}
}
Compilation message
aliens.cpp: In function 'bool query(Point)':
aliens.cpp:16:36: warning: format '%d' expects argument of type 'int', but argument 2 has type 'll {aka long long int}' [-Wformat=]
printf("examine %d %d\n", p.x, p.y);
~~~ ^
aliens.cpp:16:36: warning: format '%d' expects argument of type 'int', but argument 3 has type 'll {aka long long int}' [-Wformat=]
aliens.cpp: In function 'void answer(Point)':
aliens.cpp:26:37: warning: format '%d' expects argument of type 'int', but argument 2 has type 'll {aka long long int}' [-Wformat=]
printf("solution %d %d\n", p.x, p.y);
~~~ ^
aliens.cpp:26:37: warning: format '%d' expects argument of type 'int', but argument 3 has type 'll {aka long long int}' [-Wformat=]
aliens.cpp: In function 'int main()':
aliens.cpp:42:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
ll mid=lo+hi>>1;
~~^~~
aliens.cpp:51:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
ll mid=lo+hi>>1;
~~^~~
aliens.cpp:57:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
if(!query({l+r>>1, S.y})) M=(r-l+1)/3;
~^~
aliens.cpp:67:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
ll mid=lo+hi>>1;
~~^~~
aliens.cpp:76:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
ll mid=lo+hi>>1;
~~^~~
aliens.cpp:33:5: warning: unused variable 'i' [-Wunused-variable]
ll i, j;
^
aliens.cpp:33:8: warning: unused variable 'j' [-Wunused-variable]
ll i, j;
^
aliens.cpp: In function 'bool query(Point)':
aliens.cpp:20:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%s", t);
~~~~~^~~~~~~~~
aliens.cpp: In function 'int main()':
aliens.cpp:35:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%lld%lld%lld", &N, &S.x, &S.y);
~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
248 KB |
Output is correct |
2 |
Correct |
2 ms |
248 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
248 KB |
Output is correct |
2 |
Correct |
2 ms |
248 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
248 KB |
Output is correct |
2 |
Correct |
3 ms |
376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
3 ms |
248 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
248 KB |
Output is correct |
2 |
Correct |
7 ms |
248 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
248 KB |
Output is correct |
3 |
Correct |
3 ms |
248 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
248 KB |
Output is correct |
2 |
Correct |
3 ms |
376 KB |
Output is correct |
3 |
Correct |
3 ms |
248 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
376 KB |
Output is correct |
2 |
Correct |
3 ms |
376 KB |
Output is correct |
3 |
Correct |
1 ms |
376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
376 KB |
Output is correct |
2 |
Correct |
3 ms |
248 KB |
Output is correct |
3 |
Correct |
3 ms |
248 KB |
Output is correct |