제출 #963762

#제출 시각아이디문제언어결과실행 시간메모리
963762pccWorm Worries (BOI18_worm)C++17
32 / 100
1 ms500 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pll pair<ll,ll> #define pii pair<int,int> #define fs first #define sc second #define tlll tuple<ll,ll,ll> #define ld long double ll N,M,K,mx; const ld phi = (1+sqrt(5))/2; map<int,int> mp; int ask(int x,int y = 1,int z = 1){ if(mp.find(x) != mp.end())return mp[x]; cout<<"? "<<x<<' '<<y<<' '<<z<<endl; int re; cin>>re; return mp[x] = re; } int main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>N>>M>>K>>mx; if(M != 1||K != 1)return 0; int l = 1,r = N,ml = 1+N/(phi+1),mr = N-N/(phi+1); while(ml < mr){ //cout<<l<<' '<<ml<<' '<<mr<<' '<<r<<endl; if(ask(ml)>ask(mr)){ r = mr; mr = ml; ml = l+(r-l+1)/(phi+1); } else{ l = ml; ml = mr; mr = r-(r-l+1)/(phi+1); } } //cout<<l<<' '<<r<<endl<<endl; vector<pii> v; for(int i = l;i<=r;i++)v.push_back(pii(ask(i),i)); sort(v.rbegin(),v.rend()); cout<<"! "<<v[0].sc<<" 1 1"<<endl; }
#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...