This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
using namespace std;
int main()
{
long long N, x, y;
cin >> N >> x >> y;
long long u = 0, l = 0, r = 0, d = 0;
long long ar = 1, al = 1, au = 1, ad = 1;
bool flat = true;
while(ar && x + r + ar <= N){
cout << "examine " << x + r + ar << " " << y << endl;
string ans;
cin >> ans;
if(ans != "true"){
flat = false;
ar /= 2;
}
else if(flat){
ar *= 2;
}
else{
r += ar;
}
while(x + r + ar > N){
flat = false;
ar/=2;
}
}
flat = true;
while(al && x - l - al >= 1){
cout << "examine " << x - l - al << " " << y << endl;
string ans;
cin >> ans;
if(ans != "true"){
flat = false;
al/=2;
}
else if(flat){
al *= 2;
}
else{
l+= al;
}
while(x - l - al < 1){
flat = false;
al/=2;
}
}
flat = true;
while(au && y + u + au <= N){
cout << "examine " << x << " " << y + u + au << endl;
string ans;
cin >> ans;
if(ans != "true"){
flat = false;
au /= 2;
}
else if(flat){
au *= 2;
}
else{
u += au;
}
while(y + u + au > N){
flat = false;
au/=2;
}
}
flat = true;
while(ad && y - d - ad >= 1){
cout << "examine " << x << " " << y - d - ad << endl;
string ans;
cin >> ans;
if(ans != "true"){
flat = false;
ad /= 2;
}
else if(flat){
ad *= 2;
}
else{
d += ad;
}
while(y - d - ad < 1){
flat = false;
ad/=2;
}
}
long long midx = (2 * x + r - l) / 2, midy = (2 * y + u - d) / 2;
long long s = r + l + 1;
long long cl = 0, cr = 0, cu = 0, cd = 0;
flat = true;
while(flat && midx + 2 * s * (cr + 1) <= N){
cout << "examine " << midx + 2 * s * (cr + 1) << " " << midy << endl;
string ans;
cin >> ans;
if(ans != "true"){
flat = false;
}
else{
cr++ ;
}
}
flat = true;
while(flat && midx - 2 * s * (cl + 1) >= 1){
cout << "examine " << midx - 2 * s * (cl + 1) << " " << midy << endl;
string ans;
cin >> ans;
if(ans != "true"){
flat = false;
}
else{
cl++ ;
}
}
flat = true;
while(flat && midy + 2 * s * (cu + 1) <= N){
cout << "examine " << midx << " " << midy + 2 * s * (cu + 1) << endl;
string ans;
cin >> ans;
if(ans != "true"){
flat = false;
}
else{
cu++ ;
}
}
flat = true;
while(flat && midy - 2 * s * (cd + 1) >= 1){
cout << "examine " << midx << " " << midy - 2 * s * (cd + 1) << endl;
string ans;
cin >> ans;
if(ans != "true"){
flat = false;
}
else{
cd++;
}
}
if(cl + cr == 2){
cout << "solution ";
if(cl == cr){
cout << midx << " ";
}
if(cl == 0){
cout << midx + s * 2 << " ";
}
if(cl == 2){
cout << midx - s * 2 << " ";
}
if(cu == cd){
cout << midy << " ";
}
if(cd == 0){
cout << midy + s * 2 << " ";
}
if(cd == 2){
cout << midy - s * 2 << " ";
}
cout << endl;
}
else{
cout << "solution ";
if(cl == 0){
cout << midx + s << " ";
}
if(cl == 1){
cout << midx - s << " ";
}
if(cd == 0){
cout << midy + s << " ";
}
if(cd == 1){
cout << midy - s << " ";
}
cout << endl;
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |