Submission #970370

#TimeUsernameProblemLanguageResultExecution timeMemory
970370emptypringlescanPark (JOI17_park)C++17
47 / 100
117 ms848 KiB
#include <bits/stdc++.h> using namespace std; #include "park.h" int n; unordered_set<long long> done,ok; int cur; void dnc(int a, int b, int h){ ok.insert(a); ok.insert(b); if(a>b) swap(a,b); if(done.find(a*2000+b)!=done.end()) return; done.insert(a*2000+b); if(b<cur) return; assert(a!=b); assert(a>=0&&b>=0); int lo=0,hi=h,mid; while(lo<hi){ mid=(lo+hi)/2; int place[n]; for(int i=0; i<mid; i++) place[i]=1; for(int i=mid; i<n; i++) place[i]=0; place[a]=1; place[b]=1; int x=Ask(a,b,place); if(x) hi=mid; else lo=mid+1; } if(lo==0) Answer(a,b); else{ dnc(a,lo-1,lo); dnc(lo-1,b,lo); } } void Detect(int t, int N){ n=N; if(t==1){ int place[n]; for(int i=0; i<n; i++) place[i]=0; for(int i=0; i<n; i++){ for(int j=i+1; j<n; j++){ place[i]=1; place[j]=1; int x=Ask(i,j,place); if(x) Answer(i,j); place[i]=0; place[j]=0; } } } else if(t==2){ dnc(0,n-1,n); } else{ for(int i=1; i<n; i++){ if(ok.find(i)!=ok.end()) continue; cur=i,dnc(0,i,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...