Submission #77298

#TimeUsernameProblemLanguageResultExecution timeMemory
77298toreto_backHighway Tolls (IOI18_highway)C++14
0 / 100
142 ms2308 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; vector<int>w; int m; void init(int x){ for(int j=0;j<m;j++)w[j]=x; } 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;m=M; 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){ // cout<<l<<" "<<r<<endl; int mid=(l+r)/2; init(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); } ll xa=0,xb=0; while(!xa&&!xb && r-l+1-len+1>q){ init(1); for(int i=l;i<(l+r)/2;i++)w[i]=0; ll c1=ask(w);q--; if(c1==c){ r=(l+r)/2+1; } else if(c1==len*B){ l=(l+r)/2-1; } else{ c=c1; ll d=len,a=A,b=B; xb=(c-d*a)/(b-a); xa=d-xb; xa=(l+r)/2 - xa; // cout<<xa<<" "<<xa+len<<endl; answer(xa,xa+len); return; } } for(int i=l;;i++){ init(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...