Submission #949189

#TimeUsernameProblemLanguageResultExecution timeMemory
949189koukirocksWorm Worries (BOI18_worm)C++17
10 / 100
10 ms344 KiB
#include <bits/stdc++.h> #define speed ios_base::sync_with_stdio(0); cin.tie(0) #define all(x) (x).begin(),(x).end() #define F first #define S second using namespace std; typedef long long ll; typedef double db; typedef long double ldb; typedef pair<int,int> pii; typedef pair<ll,ll> pll; const ll MAX=2e5+10,P=1e9+7; const ll INF=0x3f3f3f3f,oo=0x3f3f3f3f3f3f3f3f; int n,m,k,q; int query(int x,int y,int z) { if (x>n or x<=0) return 0; if (y>m or y<=0) return 0; if (z>k or z<=0) return 0; cout<<"? "<<x<<" "<<y<<" "<<z<<"\n"<<flush; int ans; cin>>ans; if (ans==-1) exit(0); return ans; } int main() { speed; cin>>n>>m>>k>>q; if (n==1000000) { mt19937 rnd(time(0)+3393848); uniform_int_distribution<int> pic(1,n); int maxx=0; int id=0; for (int i=0;i<n/5000;i++) { int now=pic(rnd); // cout<<now<<"\n"; int rlt=query(now,1,1); if (rlt>maxx) { maxx=rlt; id=now; } } int dir=0; if (query(id+1,1,1)>maxx) { dir=1; } if (query(id-1,1,1)>maxx) { dir=-1; } if (dir==0) { cout<<"! "<<id<<" 1 1\n"; return 0; } int now=id+dir; int val=query(now,1,1); int nxt=query(now+dir,1,1); while (nxt>val) { val=nxt; now+=dir; nxt=query(now+dir,1,1); } cout<<"! "<<now<<" 1 1"<<"\n"; } return 0; }
#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...