Submission #523280

#TimeUsernameProblemLanguageResultExecution timeMemory
523280valerikkMinerals (JOI19_minerals)C++17
0 / 100
1 ms328 KiB
#include "minerals.h" #include <iostream> #include <vector> #include <algorithm> #include <cassert> using namespace std; void Solve(int N) { int diff = 0; vector<int> a, b; int lst = 0; for (int i = 1; i <= 2 * N; ++i) { int x = Query(i); if (x != lst) { lst = x; a.push_back(i); } else { Query(i); b.push_back(i); } } for (int i : a) { lst = Query(i); } vector<int> l(N, 0), r(N, N); for (int it = 0; it < 16; ++it) { vector<int> m(N); bool ok = true; for (int i = 0; i < N; ++i) { if (r[i] - l[i] != 1) { m[i] = (l[i] + r[i]) / 2; ok = false; } } if (ok) break; vector<vector<int>> here(N + 1); for (int i = 0; i < N; ++i) { here[m[i]].push_back(i); } if (it & 1) { for (int i = N; i >= 0; --i) { for (int j : here[i]) { int x = Query(b[j]); if (x == lst) { r[j] = m[j]; } else { l[j] = m[j]; } lst = x; } if (i != 0) lst = Query(a[i - 1]); } } else { for (int i = 0; i <= N; ++i) { for (int j : here[i]) { int x = Query(b[j]); if (x == lst) { r[j] = m[j]; } else { l[j] = m[j]; } lst = x; } if (i != N) lst = Query(a[i]); } } } for (int i = 0; i < N; ++i) { Answer(a[l[i]], b[i]); } }

Compilation message (stderr)

minerals.cpp: In function 'void Solve(int)':
minerals.cpp:11:6: warning: unused variable 'diff' [-Wunused-variable]
   11 |  int diff = 0;
      |      ^~~~
#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...