Submission #705850

#TimeUsernameProblemLanguageResultExecution timeMemory
705850qwerasdfzxclMinerals (JOI19_minerals)C++17
80 / 100
46 ms4084 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 onL, bool onR); int myquery(int x){ cur = Query(x); return cur; } void dnc0(vector<int> a){ 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{ L.push_back(x); } } dnc1(L, R, 1, 1); } void dnc1(vector<int> L, vector<int> R, bool onL, bool onR){ // 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]); myquery(L[i]);} for (int i=c/2;i<c;i++) L2.push_back(L[i]); for (auto &x:R){ int prv = cur; int delta = myquery(x) - prv; if ((!onL) == (delta==0)) R1.push_back(x); else R2.push_back(x); } dnc1(L1, R1, !onL, !onR); dnc1(L2, R2, onL, !onR); } 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]); }

Compilation message (stderr)

minerals.cpp: In function 'void dnc0(std::vector<int>)':
minerals.cpp:17:9: warning: unused variable 's0' [-Wunused-variable]
   17 |     int s0 = cur, c = a.size() / 2;
      |         ^~
#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...