제출 #1259952

#제출 시각아이디문제언어결과실행 시간메모리
1259952Szymon_PilipczukWorm Worries (BOI18_worm)C++20
32 / 100
0 ms408 KiB
#include <bits/stdc++.h> using namespace std; typedef long double ld; typedef long long ll; typedef unsigned long long ull; #define st first #define nd second #define pb push_back #define all(a) a.begin(),a.end() #define rep(a,b) for(int a = 0;a<b;a++) const int inf = 1e9; const ll infl = 1e18; ld phi =((ld)3 -sqrt(5))/2; int fgs(int ize) { return ize * phi; } int main() { int n,m,k,q; cin>>n>>m>>k>>q; pair<int,int> ran = {1,n}; int ize = ran.nd - ran.st + 1; int l; cout<<"?"<<" "<<ran.st + fgs(n)<<" "<<1<<" "<<1<<endl; cin>>l; int r; bool prev = 0; while(ran.st + 2 < ran.nd) { if(prev) { cout<<"?"<<" "<<ran.st + fgs(ize)<<" "<<1<<" "<<1<<endl; cin>>l; } else { cout<<"?"<<" "<<ran.nd - fgs(ize)<<" "<<1<<" "<<1<<endl; cin>>r; } //cerr<<fgs(ize)<<" "<<l<<" "<<r<<"\n"; if(l > r) { ran.nd -= fgs(ize) + 1; prev = true; r = l; ize = ran.nd - ran.st + 1; } else { ran.st += fgs(ize) + 1; prev = false; l = r; ize = ran.nd - ran.st + 1; } //cerr<<ran.st<<" "<<ran.nd<<"\n"; } pair<int,int> mx = {-1,-1}; for(int i = ran.st;i<= ran.nd;i++) { cout<<"?"<<" "<<i<<" "<<1<<" "<<1<<endl; int c; cin>>c; if(c > mx.st) { mx.st = c; mx.nd = i; } } cout<<"!"<<" "<<mx.nd<<" "<<1<<" "<<1<<"\n"; }
#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...