제출 #1232635

#제출 시각아이디문제언어결과실행 시간메모리
1232635dzuizzMinerals (JOI19_minerals)C++20
40 / 100
9 ms2252 KiB
#include <bits/stdc++.h>
#include "minerals.h"
using namespace std;

constexpr int N=43410;
bool qry[N];
int a,b;

void f(vector<int>&x,vector<int>&y){
  int n=(int)x.size();
  if(n==1){
    Answer(x[0],y[0]);
    return;
  }
  vector<int> nx[2],ny[2];
  for(int i=0;i<n;++i){
    if(i<n/2){
      if(qry[y[i]]) a=b,b=Query(y[i]),qry[y[i]]=0;
      ny[0].emplace_back(y[i]);
    }else{
      if(!qry[y[i]]) a=b,b=Query(y[i]),qry[y[i]]=1;
      ny[1].emplace_back(y[i]);
    }
  }
  for(int i=0;i<n;++i){
    a=b,b=Query(x[i]),qry[x[i]]=!qry[x[i]];
    nx[a==b].emplace_back(x[i]);
  }

  f(nx[0],ny[0]);
  f(nx[1],ny[1]);
}

void Solve(int N) {
  vector<int> x,y;
  for(int i=1;i<=2*N;++i){
    a=b,b=Query(i),qry[i]=1;
    if(a==b) y.emplace_back(i);
    else x.emplace_back(i);
  }
  f(x,y);
}

#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...