Submission #828371

#TimeUsernameProblemLanguageResultExecution timeMemory
828371tomrukCounting Mushrooms (IOI20_mushrooms)C++17
92.62 / 100
7 ms364 KiB
#include "mushrooms.h" #include <bits/stdc++.h> using namespace std; int count_mushrooms(int n) { vector<int> a = {0},b; int last = 1; while(last < n && max(a.size(),b.size()) < 80){ if(last + 1 == n || max(a.size(),b.size()) == 1){ int num = use_machine({0,last}); if(num == 0) a.push_back(last); else b.push_back(last); last++; } else{ if(a.size() > b.size()){ int num = use_machine({last,a[0],last+1,a[1]}); if(num & 1){ b.push_back(last); } else a.push_back(last); if(num & 2){ b.push_back(last + 1); } else a.push_back(last + 1); last+=2; } else{ int num = use_machine({last,b[0],last+1,b[1]}); if(num & 1){ a.push_back(last); } else b.push_back(last); if(num & 2){ a.push_back(last + 1); } else b.push_back(last + 1); last+=2; } } } int ca = 0,cb = 0; while(last < n){ if(a.size() > b.size()){ int cnt = 0; vector<int> ask; while(cnt < a.size() && last < n){ ask.push_back(last); ask.push_back(a[cnt]); cnt++; last++; } int num = use_machine(ask); ca += cnt; ca -= num/2; ca -= num&1; if(num & 1){ b.push_back(last - cnt); } else{ a.push_back(last - cnt); ca--; } } else{ int cnt = 0; vector<int> ask; while(cnt < b.size() && last < n){ ask.push_back(last); ask.push_back(b[cnt]); cnt++; last++; } int num = use_machine(ask); ca += num/2; ca += num&1; if(num & 1){ a.push_back(last - cnt); ca--; } else b.push_back(last - cnt); } } return a.size() + ca; }

Compilation message (stderr)

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:48:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |    while(cnt < a.size() && last < n){
      |          ~~~~^~~~~~~~~~
mushrooms.cpp:69:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   69 |    while(cnt < b.size() && last < n){
      |          ~~~~^~~~~~~~~~
mushrooms.cpp:43:13: warning: unused variable 'cb' [-Wunused-variable]
   43 |  int ca = 0,cb = 0;
      |             ^~
#Verdict Execution timeMemoryGrader output
Fetching results...