제출 #1150280

#제출 시각아이디문제언어결과실행 시간메모리
1150280ThylOneMinerals (JOI19_minerals)C++20
40 / 100
16 ms3124 KiB
#include "minerals.h"
#include <bits/stdc++.h>

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){
  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]);
        else
          outl.push_back(out_box[i]);
        Query(out_box[i]);
        
      }
    }
    recurse(inl,outl);
    for(int i = 0 ; i < inr.size();i++)Query(inr[i]);
    recurse(inr,outr);
  }
}
void Solve(int N) {
  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...