Submission #915029

#TimeUsernameProblemLanguageResultExecution timeMemory
915029guagua0407Minerals (JOI19_minerals)C++17
40 / 100
16 ms1980 KiB
#include "minerals.h" #include<bits/stdc++.h> using namespace std; #define f first #define s second vector<int> a; vector<pair<int,int>> vec; void go(int l,int r,vector<int> &b){ if(l==r){ Query(a[l]); assert((int)b.size()==1); vec.push_back({a[l],b[0]}); return; } int mid=(l+r)/2; int cur=0; for(int i=l;i<=mid;i++){ cur=Query(a[i]); } vector<int> ls,rs; for(auto v:b){ int x=Query(v); if(x==cur){ ls.push_back(v); } else{ rs.push_back(v); } Query(v); } for(int i=l;i<=mid;i++){ Query(a[i]); } vector<int>().swap(b); go(l,mid,ls); go(mid+1,r,rs); } void Solve(int n){ vector<bool> ok(2*n+1); int prv=0; for(int i=1;i<=2*n;i++){ int x=Query(i); if(x==prv+1){ ok[i]=true; } prv=x; } vector<int> b; for(int i=1;i<=2*n;i++){ if(ok[i]) a.push_back(i); else b.push_back(i); } for(int i=1;i<=2*n;i++){ Query(i); } go(0,n-1,b); for(auto v:vec){ Answer(v.f,v.s); } }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...