제출 #759767

#제출 시각아이디문제언어결과실행 시간메모리
759767MilosMilutinovicCounting Mushrooms (IOI20_mushrooms)C++14
77.40 / 100
8 ms344 KiB
#include "mushrooms.h" #include <bits/stdc++.h> using namespace std; const int C = 80; int count_mushrooms(int n) { if (n <= 227) { int ans = 1; for (int i = 1; i < n; i++) { ans += !use_machine({0, i}); } return ans; } vector<int> a(1, 0), b; for (int i = 1; i < min(n, C); i++) { if (use_machine({0, i}) == 1) b.push_back(i); else a.push_back(i); } // printf("%d\n", a.size()); int ans = a.size(); for (int i = C; i < n; i++) { int sz = max(a.size(), b.size()); vector<int> qv; int cnt = 0; for (int j = i; j < min(i + sz, n); j++) { if (j != i + sz) { if (a.size() == sz) qv.push_back(a[j - i]); else qv.push_back(b[j - i]); cnt += 1; } qv.push_back(j); } int qq = use_machine(qv); int diff = (qq + 1) / 2; int same = (qv.size() - cnt - diff); // printf("%d\n", diff); if (a.size() == sz) ans += same; else ans += diff; int is_match = (qq % 2 == 0 ? 1 : 0); if (a.size() != sz) is_match = 1 - is_match; if (is_match) a.push_back(qv.back()); else b.push_back(qv.back()); i = qv.back(); } return ans; }

컴파일 시 표준 에러 (stderr) 메시지

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:28:30: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   28 |                 if (a.size() == sz)
      |                     ~~~~~~~~~^~~~~
mushrooms.cpp:40:22: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   40 |         if (a.size() == sz)
      |             ~~~~~~~~~^~~~~
mushrooms.cpp:45:22: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   45 |         if (a.size() != sz)
      |             ~~~~~~~~~^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...