제출 #1055062

#제출 시각아이디문제언어결과실행 시간메모리
1055062pcc버섯 세기 (IOI20_mushrooms)C++17
57.07 / 100
6 ms444 KiB
#include "mushrooms.h" #include <bits/stdc++.h> using namespace std; const int B = 100; //const int B = 3; int count_mushrooms(int n) { if(n<=B){ int ans = 1; for(int i = 1;i<n;i++){ int re = use_machine(vector<int>({0,i})); if(!re)ans++; } return ans; } vector<int> v[2]; v[0].push_back(0); int nxt = 1; for(int i = 1;max(v[0].size(),v[1].size())<B;i++){ int re = use_machine(vector<int>({i*2-1,0,i*2})); if(re == 0){ v[0].push_back(i*2-1); v[0].push_back(i*2); } else if(re == 2){ v[1].push_back(i*2-1); v[1].push_back(i*2); } else{ re = use_machine(vector<int>({0,i*2-1})); if(re == 0){ v[0].push_back(i*2-1); v[1].push_back(i*2); } else{ v[1].push_back(i*2-1); v[0].push_back(i*2); } } nxt = i*2+1; } int dir = (v[0].size()<v[1].size()); int cnt[2] = {v[0].size(),v[1].size()}; /* cerr<<"DIR: "<<dir<<endl;for(auto &i:v[dir])cerr<<i<<',';cerr<<endl; cerr<<"NXT: "<<nxt<<endl; */ for(int i = nxt;i<n;i+=v[dir].size()){ vector<int> vv; for(int j = i;j<min(n,i+(int)v[dir].size());j++)vv.push_back(j); //cerr<<"VV: ";for(auto &j:vv)cerr<<j<<',';cerr<<endl; vector<int> req; for(int j = 0;j<vv.size();j++){ req.push_back(v[dir][j]); req.push_back(vv[j]); } //cerr<<nxt<<','<<vv.size()<<":"<<endl;for(auto &j:req)cerr<<j<<',';cerr<<endl; int re = use_machine(req); if(re&1)re++; re>>=1; cnt[dir^1] += re; cnt[dir] += vv.size()-re; } return cnt[0]; }

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

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:44:25: warning: narrowing conversion of 'v[0].std::vector<int>::size()' from 'std::vector<int>::size_type' {aka 'long unsigned int'} to 'int' [-Wnarrowing]
   44 |  int cnt[2] = {v[0].size(),v[1].size()};
      |                ~~~~~~~~~^~
mushrooms.cpp:44:37: warning: narrowing conversion of 'v[1].std::vector<int>::size()' from 'std::vector<int>::size_type' {aka 'long unsigned int'} to 'int' [-Wnarrowing]
   44 |  int cnt[2] = {v[0].size(),v[1].size()};
      |                            ~~~~~~~~~^~
mushrooms.cpp:54:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |   for(int j = 0;j<vv.size();j++){
      |                 ~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...