Submission #220092

#TimeUsernameProblemLanguageResultExecution timeMemory
220092rama_pangMinerals (JOI19_minerals)C++14
90 / 100
72 ms3968 KiB
#include "minerals.h" #include <bits/stdc++.h> using namespace std; bool query(int x) { static int last = -1; int cur = Query(x); bool res = (cur == last); last = cur; return res; } void Solve(vector<int> A, vector<int> B, bool isBFull) { int n = A.size(); if (n == 0) return; if (n == 1) return Answer(A[0], B[0]); int piv = n / 2; vector<int> Aleft, Aright; vector<int> Bleft, Bright; if (isBFull) { // All of B is in the box, so we remove the second half for (int i = piv; i < n; i++) { query(B[i]); // remove elements in B such that only the first half remains } } else { // None of B is in the box, so we add the first half for (int i = 0; i < piv; i++) { query(B[i]); // add elemens in B such that only the first half remains } } for (int i = 0; i < n; i++) { if (Aright.size() == n - piv) { Aleft.emplace_back(A[i]); } else if (Aleft.size() == piv) { Aright.emplace_back(A[i]); } else if (query(A[i])) { Aleft.emplace_back(A[i]); // A[i] has a match is in the first half of B } else { Aright.emplace_back(A[i]); // A[i] has a match in the second half of B } } for (int i = 0; i < piv; i++) Bleft.emplace_back(B[i]); for (int i = piv; i < n; i++) Bright.emplace_back(B[i]); return Solve(Aleft, Bleft, true), Solve(Aright, Bright, false); } void Solve(int N) { vector<int> A, B; for (int i = 1; i <= 2 * N; i++) { if (query(i)) { // the current element is already in the box B.emplace_back(i); } else { // the current element is a new element A.emplace_back(i); } } return Solve(A, B, true); }

Compilation message (stderr)

minerals.cpp: In function 'void Solve(std::vector<int>, std::vector<int>, bool)':
minerals.cpp:33:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (Aright.size() == n - piv) {
         ~~~~~~~~~~~~~~^~~~~~~~~~
minerals.cpp:35:29: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     } else if (Aleft.size() == piv) {
                ~~~~~~~~~~~~~^~~~~~
#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...