Submission #203329

#TimeUsernameProblemLanguageResultExecution timeMemory
203329theStaticMindMinerals (JOI19_minerals)C++14
40 / 100
49 ms2616 KiB
#include<bits/stdc++.h>
#define pb push_back
#define ii pair<int,int>
#define all(x) (x).begin(),(x).end()
#define sz(x) (int)(x).size()
#define INF 1000000000//00000000
#define modulo 1000000007
#define mod 998244353
//#define int long long int
using namespace std;

#include "minerals.h"

int last = 0;

void extract(vector<int>& A, vector<int>& B, vector<int>& X, vector<int>& Y){
      int n = sz(A), m = sz(B);

      for(int i = 0; i < n; i++){
            last = Query(A[i]);
      }

      for(int i = 0; i < m; i++){
            int v = Query(B[i]);
            if(v == last){
                  X.pb(B[i]);
            }
            else Y.pb(B[i]);
            last = v;
      }
      for(int i = 0; i < n; i++) last = Query(A[i]);
}

void divide(vector<int>& A, vector<int>& B){
      int n = A.size();
      if(n == 1){
            Answer(A[0], B[0]);
            return;
      }
      vector<int> X, Y;
      vector<int> tempA, tempB;
      for(int i = 0; i < n / 2; i++)tempA.pb(A[i]);
      for(int i = n / 2; i < n; i++)tempB.pb(A[i]);
      extract(tempA, B, X, Y);
      divide(tempA, X);
      divide(tempB, Y);
}

void Solve(int N) {
      vector<int> A, B;

      for(int i = 1; i <= 2 * N; i++){
            int q = Query(i);
            if(last == q){
                  B.pb(i);
            }
            else{
                  A.pb(i);
            }
            last = q;
      }
      for(int i = 0; i < N; i++) last = Query(A[i]);
      divide(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...