Submission #887122

# Submission time Handle Problem Language Result Execution time Memory
887122 2023-12-13T20:14:57 Z MilosMilutinovic Worm Worries (BOI18_worm) C++14
0 / 100
0 ms 444 KB
/* https://boi2018.progolymp.se/spoiler-day1.pdf */
#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=n-1;i>=a;i--)
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
typedef vector<int> VI;
typedef basic_string<int> BI;
typedef long long ll;
typedef pair<int,int> PII;
typedef double db;
mt19937 mrand(random_device{}()); 
const ll mod=998244353;
int rnd(int x) { return mrand() % x;}
ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
// head

int n,m,k,q;
map<array<int,3>,int> val;

int ask(int x,int y,int z) {
	if (x<1||x>n||y<1||y>m||z<1||z>k) return 0;
	if (!val.count({x,y,z})) {
		printf("! %d %d %d\n",x,y,z);
		fflush(stdout);
		scanf("%d",&val[{x,y,z}]);
	}
	return val[{x,y,z}];
}

bool good(int x,int y,int z){
	if (ask(x,y,z)<ask(x+1,y,z)) return false;
	if (ask(x,y,z)<ask(x,y+1,z)) return false;
	if (ask(x,y,z)<ask(x,y,z+1)) return false;
	if (ask(x,y,z)<ask(x-1,y,z)) return false;
	if (ask(x,y,z)<ask(x,y-1,z)) return false;
	if (ask(x,y,z)<ask(x,y,z-1)) return false;
	return true;
}

int main() {
	scanf("%d%d%d%d",&n,&m,&k,&q);
	if(m==1&&k==1) {
		int l=1,r=n,x=0.618*l+0.382*r,y=0.382*l+0.618*r;
		while (l+3<r) {
			if (x>=y) {
				x=0.618*l+0.382*r;
				y=0.382*l+0.618*r;
				if(x>=y) break;
			}
			if (ask(x,1,1)<ask(y,1,1)) {
				l=x+1; x=y; y=0.382*l+0.618*r;
			} else {
				r=y-1; y=x; x=0.618*l+0.382*r;
			}
		}
		int ans=x;
		rep(i,x+1,y+1) if (good(i,1,1)) ans=i;
		printf("! %d 1 1",ans);
		fflush(stdout);
		return 0;
	}
}

Compilation message

worm.cpp: In function 'int ask(int, int, int)':
worm.cpp:33:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   33 |   scanf("%d",&val[{x,y,z}]);
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~
worm.cpp: In function 'int main()':
worm.cpp:49:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   49 |  scanf("%d%d%d%d",&n,&m,&k,&q);
      |  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Runtime error 0 ms 444 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 0 ms 440 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 344 KB invalid format (must have DIMS+1 tokens). input:
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 344 KB invalid format (must have DIMS+1 tokens). input:
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 344 KB invalid format (must have DIMS+1 tokens). input:
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 344 KB invalid format (must have DIMS+1 tokens). input:
2 Halted 0 ms 0 KB -