제출 #250209

#제출 시각아이디문제언어결과실행 시간메모리
250209errorgornMinerals (JOI19_minerals)C++14
85 / 100
310 ms6516 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()); set<int> in; int query(int i){ if (in.count(i)) in.erase(i); else in.insert(i); return Query(i); } int curr=0; void rec(vector<int> v1,vector<int> v2,int flag){ //0-in out //1-in in //2-out out /* for (auto &it:v1) cout<<it<<" ";cout<<endl; for (auto &it:v2) cout<<it<<" ";cout<<endl; for (auto &it:in) cout<<it<<" ";cout<<endl; cout<<endl; //*/ if (sz(v1)==1){ Answer(v1[0],v2[0]); return; } vector<int> l1,l2,r1,r2; int half; if (flag!=2) half=sz(v1)*0.62; else half=ceil(sz(v1)*0.38); rep(x,0,half){ if (flag==2) curr=query(v1[x]); l1.push_back(v1[x]); } rep(x,half,sz(v1)){ if (flag!=2) curr=query(v1[x]); r1.push_back(v1[x]); } if (flag!=1){ 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,1),rec(r2,r1,0); } else{ 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,0),rec(r1,r2,2); } } 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,1); }
#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...