Submission #305165

#TimeUsernameProblemLanguageResultExecution timeMemory
305165aljasdlas버섯 세기 (IOI20_mushrooms)C++14
0 / 100
1 ms256 KiB
#include "mushrooms.h" #include <bits/stdc++.h> using namespace std; int count_mushrooms(int n) { if(n < 220 && false) { int B = 0; for(int i = 1; i < n; i++) { B += use_machine({0, i}); } return n-B; } vector<int> perm; for(int i = 1; i < n; i++) perm.push_back(i); srand(time(0)); vector<int> A, B; A = {0}; if(use_machine({0,1})) B.push_back(1); else A.push_back(1); if(use_machine({0,2})) B.push_back(2); else A.push_back(2); if(B.size() > A.size()) swap(A,B); for(int i = 3; i < n && (A.size()-1)*(A.size()-1) < (n-A.size()-B.size()) && (B.size()-1)*(B.size()-1) < (n-A.size()-B.size()); i+=2) { vector<int> cur; cur.push_back(A[0]); cur.push_back(i); cur.push_back(A[1]); if(i+1 < n) cur.push_back(i+1); // for(auto x: cur) cerr << x << " "; // cerr << endl; int res = use_machine(cur); if(res & 2) B.push_back(i); else A.push_back(i); if(i+1 < n) { if(res & 1) B.push_back(i+1); else A.push_back(i+1); } } if(B.size() > A.size()) swap(A,B); int countA = 0; int countB = 0; for(int i = A.size()+B.size(); i < n; i+=A.size()) { vector<int> cur; int j = 0; for(j = 0; i+j < n && j < A.size(); j++) { cur.push_back(A[j]); cur.push_back(i+j); } // for(auto x: cur) cerr << x << " "; // cerr << ": "; int res = use_machine(cur); countB += (res+1)/2; countA += j - ((res+1)/2); if(res % 2 == 0) { B.push_back(cur.back()); } else { A.push_back(cur.back()); } if(B.size() > A.size()) swap(A,B); // cerr << res << " -> " << countA << " " << countA << endl;; } if(A[0] == 0) return A.size()+countA; else return B.size()+countB; }

Compilation message (stderr)

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:56:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |   for(j = 0; i+j < n && j < A.size(); j++) {
      |                         ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...