제출 #250193

#제출 시각아이디문제언어결과실행 시간메모리
250193errorgornMinerals (JOI19_minerals)C++14
40 / 100
78 ms3788 KiB
#include <bits/stdc++.h> #include "minerals.h" using namespace std; #define rep(x,s,e) for (auto x=s;x<e;x++) #define sz(x) (int)(x).size() #define all(x) (x).begin(),(x).end() mt19937 rng(chrono::system_clock::now().time_since_epoch().count()); int curr=0; void rec(vector<int> v1,vector<int> v2,bool flag){ /* for (auto &it:v1) cout<<it<<" ";cout<<endl; for (auto &it:v2) cout<<it<<" ";cout<<endl; cout<<endl; //*/ if (sz(v1)==1){ Answer(v1[0],v2[0]); curr=Query(v1[0]); if (flag) Query(v2[0]); return; } rep(x,0,sz(v1)) swap(v1[x],v1[rng()%(x+1)]); rep(x,0,sz(v2)) swap(v2[x],v2[rng()%(x+1)]); vector<int> l1,l2,r1,r2; int half=1; while (half<sz(v1)) half<<=1; half>>=1; rep(x,0,half){ l1.push_back(v1[x]); } rep(x,half,sz(v1)){ curr=Query(v1[x]); r1.push_back(v1[x]); } if (!flag){ for (auto &it:v2){ int temp=Query(it); if (temp==curr){ l2.push_back(it); } else{ r2.push_back(it); curr=temp; } } rec(l1,l2,true),rec(r2,r1,false); } else{ for (auto &it:v2){ int temp=Query(it); if (temp==curr){ l2.push_back(it); } else{ r2.push_back(it); Query(it); } } rec(l1,l2,false),rec(r2,r1,false); } } void Solve(int n) { vector<int> v1,v2; rep(x,1,2*n+1){ int temp=Query(x); if (temp==curr){ v2.push_back(x); } else{ v1.push_back(x); } curr=temp; } rec(v1,v2,true); }
#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...