Submission #409341

#TimeUsernameProblemLanguageResultExecution timeMemory
409341Carmel_Ab1버섯 세기 (IOI20_mushrooms)C++17
37.98 / 100
14 ms628 KiB
#include <bits/stdc++.h> #include "mushrooms.h" //#include "stub.cpp" using namespace std; #define pb push_back typedef vector<int> vi; typedef long long ll; int ceil(int a,int b){ int ans=a/b; if(a%b) ans++; return ans; } int count_mushrooms(int n) { int ans=1; vi o,z,a(n,-1); a[0]=0; z.pb(0); if(n<=226){ for(int i=1; i<n; i++) ans+=1- use_machine({0,i}); return ans; } const int k=100; int first=1; for(int i=1; o.size()<k && z.size()<k;first++, i++){ if(use_machine({0,i})) o.pb(i),a[i]=1; else ans++,z.pb(i),a[i]=0; } vi left; for(int i=first; i<n;i++) left.pb(i); if(o.size()>z.size()){ for(int i=k,j=0; i<n;j=0, i++){ vi cur; while(left.size() && cur.size()+2<=n && cur.size()+1<=o.size()){ cur.pb(o[j]); cur.pb(left.back()); left.pop_back(); j++; } if(cur.size()>=2) ans+= ceil(use_machine(cur),2); } } else{ for(int i=k,j=0; i<n;j=0, i++){ int in=0; vi cur; while(left.size() && cur.size()+2<=n && cur.size()+1<=z.size()){ cur.pb(z[j]); cur.pb(left.back()); left.pop_back(); j++; in++; } if(cur.size()>=2) ans+= in-ceil(use_machine(cur),2); } } return ans; }

Compilation message (stderr)

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:45:46: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   45 |             while(left.size() && cur.size()+2<=n && cur.size()+1<=o.size()){
      |                                  ~~~~~~~~~~~~^~~
mushrooms.cpp:59:46: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   59 |             while(left.size() && cur.size()+2<=n && cur.size()+1<=z.size()){
      |                                  ~~~~~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...