Submission #705848

#TimeUsernameProblemLanguageResultExecution timeMemory
705848qwerasdfzxclMinerals (JOI19_minerals)C++17
40 / 100
37 ms3204 KiB
#include "minerals.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; int n, cur, ans[100100]; void dnc0(vector<int> a); void dnc1(vector<int> L, vector<int> R, bool on); int myquery(int x){ cur = Query(x); return cur; } void dnc0(vector<int> a){ // printf("dnc0: "); // for (auto &x:a) printf("%d ", x); // printf("\n"); int s0 = cur, c = a.size() / 2; if (c==0) return; if (c==1){ ans[a[0]] = a[1]; ans[a[1]] = a[0]; return; } vector<int> L, R, Z; for (auto &x:a){ int prv = cur; int now = myquery(x); if (now==prv){ R.push_back(x); } else if (now <= s0 + c/2){ L.push_back(x); } else{ Z.push_back(x); myquery(x); } } dnc1(L, R, 1); dnc0(Z); } void dnc1(vector<int> L, vector<int> R, bool on){ // printf("dnc1: "); // for (auto &x:L) printf("%d ", x); // printf("\n"); // for (auto &x:R) printf("%d ", x); // printf("\n"); int c = L.size(); if (c==0) return; if (c==1){ ans[L[0]] = R[0]; ans[R[0]] = L[0]; return; } vector<int> L1, R1, L2, R2; for (int i=0;i<c/2;i++) L1.push_back(L[i]); for (int i=c/2;i<c;i++) {L2.push_back(L[i]); myquery(L[i]);} for (auto &x:R){ int prv = cur; if ((myquery(x)==prv) == on){ myquery(x); R1.push_back(x); } else{ R2.push_back(x); } } dnc1(L1, R1, on); dnc1(L2, R2, !on); } void Solve(int N) { n = N, cur = 0; vector<int> a; for (int i=1;i<=n*2;i++) a.push_back(i); dnc0(a); for (int i=1;i<=n*2;i++) if (i < ans[i]) Answer(i, ans[i]); }
#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...