제출 #1339091

#제출 시각아이디문제언어결과실행 시간메모리
1339091po_rag526Aliens (IOI07_aliens)C++17
40 / 100
1 ms440 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

#define all(c) (c).begin(), (c).end()
#define F first
#define S second

int last_true(int lo, int hi, function<bool(int)>ok){
	lo--;
	while(lo<hi){
		int mid = lo + (hi-lo+1)/2;
		if (ok(mid)) lo = mid;
		else hi = mid-1;
	}
	return lo;
}

int first_true(int lo, int hi, function<bool(int)>ok){
	hi++;
	while(lo<hi){
		int mid = lo + (hi-lo)/2;
		if (ok(mid)) hi = mid;
		else lo = mid+1;
	}
	return lo;
}

const int mxN = 100;
int grid[mxN][mxN];
bool self = false;

bool examine(int x, int y){
	if (self) return grid[x][y];
	cout << "examine " << x << " " << y << endl;	
	fflush(stdout);
	string res; cin>>res;
	return res == "true";
}

void fetch(int n){
	for (int i=1;i<=n;i++) {
		string s; cin>>s;
		for (int j=1;j<=n;j++) {
			grid[i][j] = s[j-1] == '*';
		}
	}
}

void solve(){
	int n,x,y; cin>>n>>x>>y;
	if (self) fetch(n);
	int ax=x, ay=y, bx=x, by=y;
	while(ax > 1 && examine(ax-1, ay)) ax--;
	while(ay > 1 && examine(ax, ay-1)) ay--;
	while(bx < n && examine(bx+1, by)) bx++;
	while(by < n && examine(bx, by+1)) by++;
	int M = bx-ax+1;
	int cx = (ax+bx)/2, cy = (ay+by)/2;
  // cout << ax << " " << ay << endl;
  // cout << bx << " " << by << endl;
	while(cx - M >= 1 && cy - M >= 1 && examine(cx-M, cy-M)) cx-=M, cy-=M;
  while(cx - 2*M >= 1 && examine(cx-2*M, cy)) cx-=2*M;
	while(cy - 2*M >= 1 && examine(cx, cy-2*M)) cy-=2*M;
	cout << "solution " << cx+2*M << " " << cy+2*M << endl;
	fflush(stdout);
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	solve();
}
#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...