Submission #710566

#TimeUsernameProblemLanguageResultExecution timeMemory
710566LittleCubeMinerals (JOI19_minerals)C++14
90 / 100
58 ms3440 KiB
#include "minerals.h" #include <bits/stdc++.h> #define pii pair<int, int> #define F first #define S second using namespace std; int pre, cur; bool change(int x) { // cerr << "change " << x << '\n'; cur = Query(x); swap(pre, cur); return pre != cur; } void solve(vector<int> X, vector<int> Y, bool bX, bool bY) { if(X.size() == 1) { Answer(X[0], Y[0]); return; } int N = X.size(), mid = N / 2; vector<int> lX(X.begin(), X.begin() + mid), rX(X.begin() + mid, X.end()), lY, rY; if(bX) for(int i = mid; i < N; i++) change(X[i]); else for(int i = 0; i < mid; i++) change(X[i]); for(int i : Y) { if(change(i)) rY.emplace_back(i); else lY.emplace_back(i); if(lY.size() == mid || rY.size() == N - mid) break; } if(lY.size() == mid) while(rY.size() < N - mid) { rY.emplace_back(Y.back()); Y.pop_back(); } else while(lY.size() < mid) { lY.emplace_back(Y.back()); Y.pop_back(); } solve(lX, lY, 1, !bY); solve(rX, rY, 0, !bY); } void Solve(int N) { pre = cur = 0; vector<int> X, Y; mt19937 rd(std::chrono::steady_clock::now().time_since_epoch().count()); for(int i = 1; i <= 2 * N; i++) { if(change(i)) X.emplace_back(i); else Y.emplace_back(i); } shuffle(X.begin(), X.end(), rd); shuffle(Y.begin(), Y.end(), rd); solve(X, Y, 1, 1); }

Compilation message (stderr)

minerals.cpp: In function 'void solve(std::vector<int>, std::vector<int>, bool, bool)':
minerals.cpp:42:16: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   42 |   if(lY.size() == mid || rY.size() == N - mid)
      |      ~~~~~~~~~~^~~~~~
minerals.cpp:42:36: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   42 |   if(lY.size() == mid || rY.size() == N - mid)
      |                          ~~~~~~~~~~^~~~~~~~~~
minerals.cpp:45:15: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   45 |  if(lY.size() == mid)
      |     ~~~~~~~~~~^~~~~~
minerals.cpp:46:19: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   46 |   while(rY.size() < N - mid)
      |         ~~~~~~~~~~^~~~~~~~~
minerals.cpp:52:19: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   52 |   while(lY.size() < mid)
      |         ~~~~~~~~~~^~~~~
#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...