Submission #77289

#TimeUsernameProblemLanguageResultExecution timeMemory
77289toreto_backHighway Tolls (IOI18_highway)C++14
0 / 100
180 ms2304 KiB
#include "highway.h" #include <bits/stdc++.h> #define F first #define S second using namespace std; typedef long long ll; typedef double D; const ll mod=1e9+7; const ll inf=(1ll<<61); const int MX=3e5+9; void find_pair(int N, vector<int> U, vector<int> V, int A, int B) { int l=0,r=N-1,m=U.size(),n=N; int q=99; vector<int>w; for(int i=0;i<m;i++)w.push_back(0); ll c=ask(w); int len=c/A; while(r-l+1>2*len && r-l+1-len+1>q){ int mid=(l+r)/2; for(int i=0;i<n;i++)w[i]=0; for(int i=l;i<mid;i++)w[i]=1; ll c1=ask(w);q--; if(c1==c){ l=max(0,mid-len+1); } else r=min(mid+len-1,n-1); } int p=0,x=10; while(r-l+1-len+1>q){ // cout<<r-l+1-len+1<<" "<<q<<endl; // cout<<l<<" "<<r<<endl; for(int i=0;i<n;i++)w[i]=0; if(p){ int mid=(r-l+1)/x+l; for(int i=l;i<mid;i++)w[i]=1; ll c1=ask(w);q--; if(c1==c){ l=mid+1; } else r=mid+len-1; } else{ int mid=r-(r-l+1)/x; for(int i=r;i>mid;i--)w[i]=1; ll c1=ask(w);q--; if(c1==c){ r=mid-1; } else l=mid-len+1; } p^=1; x+=10; } for(int i=l;i+len<=r;i++){ for(int j=0;j<m;j++)w[j]=1; for(int j=i;j<len+i;j++)w[j]=0; ll c1=ask(w); if(c1==c){ answer(i,i+len); break; } } }
#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...