제출 #304256

#제출 시각아이디문제언어결과실행 시간메모리
304256juggernaut버섯 세기 (IOI20_mushrooms)C++14
92.24 / 100
13 ms640 KiB
#include"mushrooms.h" #include<bits/stdc++.h> //#include"stub.cpp" using namespace std; int count_mushrooms(int n){ vector<int>a,b,id; int i=1,res=1,j; for(;i<n;i++)id.push_back(i); srand(time(NULL)); random_shuffle(id.begin(),id.end()); i=1; a.push_back(0); while(i<min(n,3)){ if(use_machine({0,id[i-1]}))b.push_back(id[i-1]); else a.push_back(id[i-1]),res++; i++; } while(i+1<min(200,n)){ if(a.size()>b.size()){ j=use_machine({a[0],id[i-1],a[1],id[i]}); if(j&1)b.push_back(id[i]); else a.push_back(id[i]),res++; if(j&2)b.push_back(id[i-1]); else a.push_back(id[i-1]),res++; }else{ j=use_machine({b[0],id[i-1],b[1],id[i]}); if(j&1)a.push_back(id[i]),res++; else b.push_back(id[i]); if(j&2)a.push_back(id[i-1]),res++; else b.push_back(id[i-1]); } i+=2; } while(i<n){ if(a.size()>b.size()){ vector<int>v; for(j=0;j<a.size()&&i+j<n;j++){ v.push_back(a[j]); v.push_back(id[i+j-1]); } i+=j; j=use_machine(v); if(j&1)b.push_back(v.back()); else a.push_back(v.back()); j++; j>>=1; res+=(((int(v.size()))>>1))-j; }else{ vector<int>v; for(j=0;j<b.size()&&i+j<n;j++){ v.push_back(b[j]); v.push_back(id[i+j-1]); } i+=j; j=use_machine(v); if(j&1)a.push_back(v.back()); else b.push_back(v.back()); j++; j>>=1; res+=j; } } return res; }

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

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