제출 #1150331

#제출 시각아이디문제언어결과실행 시간메모리
1150331ThylOneMinerals (JOI19_minerals)C++20
6 / 100
1 ms420 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;
}
bool box[1000];
int Query_(int x){
  box[x] = !box[x];
  return Query(x);
}
void recurse(vector<int> in_box, vector<int> out_box, bool side = false){
  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]);
    for(int i = mid ; i < in_box.size(); i++)inr.push_back(in_box[i]);
    int base = 0;
    for(int i = (side?0:mid) ; i < (side?mid:in_box.size());i++){
      base = Query_(in_box[i]);
    }
    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){
          outr.push_back(out_box[i]);
        }else{
          outl.push_back(out_box[i]);
        }
        base = x;
      }
    }
    recurse(inl,outl,0);
    recurse(inr,outr,1);
  }
}
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...