답안 #101351

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
101351 2019-03-18T16:24:24 Z asifthegreat Aliens (IOI07_aliens) C++14
70 / 100
7 ms 384 KB
#include <bits/stdc++.h>
#define int long long 
using namespace std;

char s[100];
int q = 0;

int n;

bool valid(int x,int y)
{
	if(x <= 0 or y <= 0 or x > n or y > n)return false;
	return true;
}

bool query(int x,int y)
{
	if(!valid(x,y))return false;
	printf("examine %lld %lld\n",x,y);
	fflush(stdout);
	scanf("%s",s);
	if(s[0] == 't')return true;
	return false;
}

void anss(int a,int b)
{
	printf("solution %lld %lld\n",a,b);
	fflush(stdout);
}

int32_t main()
{
	int x,y;
	scanf("%lld %lld %lld",&n,&x,&y);
	int temp_x = x,temp_y = y;
	while(1){
		if(!query(temp_x+1ll,y))break;
		for(int i = 0; i <= 31;i++){
			if(temp_x+(1ll<<i) > n)break;
			if(query(temp_x+(1ll<<i),y)){
				temp_x += (1ll<<i);
			}
			else break;
		}
	}
	//cout << q << endl;
	//cout << temp_x << endl;
	int niche = temp_x;
	temp_x = x;
	while(1){
		if(!query(temp_x-1,y))break;
		for(int i = 0; i <= 31;i++){
			if(temp_x-(1ll<<i) <= 0)break;
			if(query(temp_x-(1ll<<i),y)){
				temp_x -= (1ll<<i);
			}
			else break;
		}
	}
	//cout << q << endl;
	//cout << temp_x << endl;
	int upore = temp_x;
	//cout << niche  << " " << upore << endl;
	int expand = niche-upore+1;
	//cout << expand << endl;
	while(1){
		if(!query(x,temp_y+1ll))break;
		for(int i = 0; i <= 31;i++){
			//if(x+(1ll > n)break;
			if(temp_y+(1ll<<i) > n)break;
			if(query(x,temp_y+(1ll<<i))){
				temp_y += (1ll<<i);
			}
			else break;
		}
	}
	int dan = temp_y;
	int bam = temp_y-expand+1;
	//{upore,niche,dan,bam roilo..}
	int per_upore = upore,per_niche = niche,per_dan = dan,per_bam = bam;
	//cout << q << endl;
	int uthlam = 0;
	while(1){
		if(!query(upore-1,bam-1))break;
		uthlam++;
		upore--,bam--;
		upore = upore-expand+1;
		bam = bam-expand+1;
		//cout << upore << " " << bam << endl;//exit(0);
	}
	if(uthlam >= 4){
		anss(upore+(expand*2)+(expand/2),bam+(expand*2)+(expand/2));
		exit(0);
	}
	int bame_gesi = 0;
	while(1){
		if(!query(upore,bam-expand-1))break;
		bam = bam-expand*2;
		bame_gesi++;
	}
	//cout << bam << endl;
	while(1){
		if(bame_gesi)break;
		if(!query(upore-expand-1,bam))break;
		upore = upore-expand*2;
	}
	anss(upore+(expand*2)+(expand/2),bam+(expand*2)+(expand/2));

	return 0;
		
}

Compilation message

aliens.cpp: In function 'int32_t main()':
aliens.cpp:81:6: warning: unused variable 'per_upore' [-Wunused-variable]
  int per_upore = upore,per_niche = niche,per_dan = dan,per_bam = bam;
      ^~~~~~~~~
aliens.cpp:81:24: warning: unused variable 'per_niche' [-Wunused-variable]
  int per_upore = upore,per_niche = niche,per_dan = dan,per_bam = bam;
                        ^~~~~~~~~
aliens.cpp:81:42: warning: unused variable 'per_dan' [-Wunused-variable]
  int per_upore = upore,per_niche = niche,per_dan = dan,per_bam = bam;
                                          ^~~~~~~
aliens.cpp:81:56: warning: unused variable 'per_bam' [-Wunused-variable]
  int per_upore = upore,per_niche = niche,per_dan = dan,per_bam = bam;
                                                        ^~~~~~~
aliens.cpp: In function 'bool query(long long int, long long int)':
aliens.cpp:21:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s",s);
  ~~~~~^~~~~~~~
aliens.cpp: In function 'int32_t 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,&x,&y);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 256 KB Output is correct
2 Correct 3 ms 256 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 384 KB Output is correct
2 Correct 3 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 256 KB Output is correct
2 Correct 5 ms 256 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 4 ms 256 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 5 ms 256 KB Output is correct
3 Incorrect 6 ms 256 KB too many queries
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 384 KB too many queries
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 384 KB Output is correct
2 Incorrect 7 ms 384 KB too many queries
3 Halted 0 ms 0 KB -