제출 #834234

#제출 시각아이디문제언어결과실행 시간메모리
834234finn__버섯 세기 (IOI20_mushrooms)C++17
0 / 100
1 ms208 KiB
#include <bits/stdc++.h> #include "mushrooms.h" using namespace std; constexpr size_t M = 80; int count_mushrooms(int n) { vector<int> a_indices = {0}, b_indices; (use_machine({0, 1}) ? b_indices : a_indices).push_back(1); (use_machine({0, 2}) ? b_indices : a_indices).push_back(2); int last_known = 2; // Search for at least M A or B. for (int i = last_known + 1; i + 1 < n; i += 2) { int x = use_machine({a_indices.size() >= 2 ? a_indices[0] : b_indices[0], i, a_indices.size() >= 2 ? a_indices[1] : b_indices[1], i + 1}); last_known = i + 1; if ((x & 1) ^ (b_indices.size() >= 2)) b_indices.push_back(i + 1); else a_indices.push_back(i + 1); if ((x & 2) ^ (b_indices.size() >= 2)) b_indices.push_back(i); else a_indices.push_back(i); if (a_indices.size() >= M || b_indices.size() >= M) break; } int num_a = a_indices.size(); if (last_known == n - 2) { num_a += !use_machine({0, n - 1}); ++last_known; } if (last_known == n - 1) return num_a; { for (int i = last_known + 1; i < n;) { vector<int> &r = a_indices.size() > b_indices.size() ? a_indices : b_indices; size_t m = r.size(); bool flag = a_indices.size() > b_indices.size(); vector<int> v; for (int j = 0; j < m && i + j < n; ++j) { v.push_back(r[j]); v.push_back(i + j); } int x = use_machine(v); num_a += flag ? v.size() / 2 - (x + 1) / 2 : (x + 1) / 2; (((x & 1) ^ flag) ? a_indices : b_indices).push_back(min<size_t>(n, i + m - 1)); i += m; } } return num_a; }

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

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