Submission #1150304

#TimeUsernameProblemLanguageResultExecution timeMemory
1150304ThylOneMinerals (JOI19_minerals)C++20
0 / 100
0 ms416 KiB
#include "minerals.h" #include <algorithm> #include <bits/stdc++.h> #include <cstdlib> using namespace std; void dbg(string tag, vector<int> v){ cerr<<tag<< " "; for(int a:v)cerr<<a<<' '; cerr<<endl; } void recurse(vector<int> in_box, vector<int> out_box){ random_shuffle(in_box.begin(),in_box.end()); random_shuffle(out_box.begin(),out_box.end()); if(in_box.size()==1 && out_box.size()==1){ Answer(in_box.back(),out_box.back()); }else{ vector<int> inl,inr,outl,outr; int mid = in_box.size()/2; for(int i = 0 ; i < mid; i++)inl.push_back(in_box[i]); int base = 0; for(int i = mid ; i < in_box.size();i++){ inr.push_back(in_box[i]); base = Query(inr.back()); } for(int i = 0 ; i < out_box.size() ; i++){ //Si tout est déja complet on économise BEAUCOUP if(outr.size()==inr.size()){ outl.push_back(out_box[i]); }else if(outl.size()==inl.size()){ outr.push_back(out_box[i]); }else{ int x = Query(out_box[i]); if(x == (base+1)){ outr.push_back(out_box[i]); base++; }else{ outl.push_back(out_box[i]); Query(out_box[i]); } } } recurse(inl,outl); recurse(outr,inr); } } void Solve(int N) { srand(time(NULL)); vector<int> A,B; int base = 0; for(int i = 1 ; i < 2*N ; i++){ int x = Query(i); if(x==(base+1)){A.push_back(i);base++;} else{Query(i);B.push_back(i);} } if(A.size()==N)B.push_back(2*N); else A.push_back(2*N); recurse(A,B); }
#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...