Submission #121725

#TimeUsernameProblemLanguageResultExecution timeMemory
121725samjia2000Worm Worries (BOI18_worm)C++14
59 / 100
721 ms388 KiB
#include<bits/stdc++.h>

#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)

using namespace std;

typedef double db;
typedef long long LL;

int get(){
	char ch;
	while(ch=getchar(),(ch<'0'||ch>'9')&&ch!='-');
	if (ch=='-'){
		int s=0;
		while(ch=getchar(),ch>='0'&&ch<='9')s=s*10+ch-'0';
		return -s;
	}
	int s=ch-'0';
	while(ch=getchar(),ch>='0'&&ch<='9')s=s*10+ch-'0';
	return s;
}

typedef unsigned int ui;

ui seed;
ui getrand(){seed^=seed<<13;seed^=seed>>17;seed^=seed<<5;return seed;}

int fx[6][3]={{0,0,-1},{0,0,1},{1,0,0},{-1,0,0},{0,1,0},{0,-1,0}};

int main(){
	int n=get(),m=get(),k=get();
	int q=get();
	seed=845125457;
	int x,y,z,val=-1;
	fo(i,1,q/2){
		int px=getrand()%n+1,py=getrand()%m+1,pz=getrand()%k+1;
		printf("? %d %d %d\n",px,py,pz);
		fflush(stdout);
		int ret=0;
		scanf("%d",&ret);
		if (val<ret){
			x=px,y=py,z=pz;
			val=ret;
		}
	}
	for(;1;){
		bool cg=0;
		fo(t,0,5){
			int px=x+fx[t][0],py=y+fx[t][1],pz=z+fx[t][2];
			int ret=0;
			if (px<1||py<1||pz<1||px>n||py>m||pz>k)ret=0;
			else{
				printf("? %d %d %d\n",px,py,pz);
				fflush(stdout);
				scanf("%d",&ret);
			}
			if (ret>val){
				x=px,y=py,z=pz;
				val=ret;
				cg=1;
				break;
			}
		}
		if (!cg)break;
	}
	printf("! %d %d %d\n",x,y,z);
	fflush(stdout);
	return 0;
}

Compilation message (stderr)

worm.cpp: In function 'int main()':
worm.cpp:41:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d",&ret);
   ~~~~~^~~~~~~~~~~
worm.cpp:56:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&ret);
     ~~~~~^~~~~~~~~~~
#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...