제출 #1307617

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

mt19937_64 rng(chrono::high_resolution_clock::now().time_since_epoch().count());
int random(int l, int r) {
  return uniform_int_distribution <int> (l, r)(rng);
}

void Solve(int N) {
  vector <int> remain(2 * N);
  iota(remain.begin(), remain.end(), 1);

  deque <int> ve;
  for (int times = 0; times < N; times++) {
    while (true) {
      int p = random(0, remain.size() - 1);
      ve.emplace_back(remain[p]);
      swap(remain[p], remain.back());
      remain.pop_back();

      if (Query(ve.back()) < ve.size()) {
        while (true) {
          int cur = ve.front(), ask = Query(cur); ve.pop_front();
          if (ask == ve.size()) {
            Answer(cur, ve.back());
            Query(ve.back()); ve.pop_back();
            break;
            // ve = {nhung thang duoc them vao giua pairs}
          }
          remain.emplace_back(cur);
          // nhung thang bo qua phai them lai remain
        }
        break;
      }
    }
  }
}
#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...