Submission #309426

#TimeUsernameProblemLanguageResultExecution timeMemory
309426lucaperjuCounting Mushrooms (IOI20_mushrooms)C++14
76.09 / 100
18 ms640 KiB
#include "mushrooms.h" #include <bits/stdc++.h> using namespace std; vector<int> ta,tb,ord; vector<int>vc; int v[20003]; int count_mushrooms(int n) { std::vector<int> m; /** for (int i = 0; i < n; i++) m.push_back(i); int c1 = use_machine(m); m = {0, 1}; int c2 = use_machine(m); return c1+c2; */ int i,j; for(i=1;i<n;++i) ord.push_back(i); random_shuffle(ord.begin(),ord.end()); ta.push_back(0); i=0; while(i<ord.size() && ta.size()<2 && tb.size()<2) { m.clear(); m.push_back(0); m.push_back(ord[i]); int a = use_machine(m); if(a==0) ta.push_back(ord[i]); else tb.push_back(ord[i]); ++i; } int type=1; if(ta.size()<2) type=2; if(ta.size()>=2) { vc.push_back(ta[0]); vc.push_back(ta[1]); } else { vc.push_back(tb[0]); vc.push_back(tb[1]); } int cnta=0; int cntc=100; while(cntc--) { if(i+1<ord.size()) { m.clear(); m.push_back(vc[0]); m.push_back(ord[i]); m.push_back(vc[1]); m.push_back(ord[i+1]); int a=use_machine(m); if(type==1) { if(a&2) tb.push_back(ord[i]); else ta.push_back(ord[i]); if(a&1) tb.push_back(ord[i+1]); else ta.push_back(ord[i+1]); } else { if(a&2) ta.push_back(ord[i]); else tb.push_back(ord[i]); if(a&1) ta.push_back(ord[i+1]); else tb.push_back(ord[i+1]); } i+=2; } else if(i<ord.size()) { m.clear(); m.push_back(0); m.push_back(ord[i]); int a = use_machine(m); if(a==0) ta.push_back(ord[i]); else tb.push_back(ord[i]); ++i; } else break; } if(ta.size()>tb.size()) type=1; else type=2; vc.clear(); if(type==1) for(j=0;j<ta.size();++j) vc.push_back(ta[j]); else for(j=0;j<tb.size();++j) vc.push_back(tb[j]); cnta=ta.size(); while(i<ord.size()) { m.clear(); int catc=0; for(j=0;j<vc.size() && i<ord.size();++j,++i) { m.push_back(vc[j]); m.push_back(ord[i]); ++catc; } int a=use_machine(m); a=((a+1)>>1); if(type==2) cnta+=a; else cnta+=catc-a; } return cnta; }

Compilation message (stderr)

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:23:12: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   23 |     while(i<ord.size() && ta.size()<2 && tb.size()<2)
      |           ~^~~~~~~~~~~
mushrooms.cpp:52:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |         if(i+1<ord.size())
      |            ~~~^~~~~~~~~~~
mushrooms.cpp:84:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   84 |         else if(i<ord.size())
      |                 ~^~~~~~~~~~~
mushrooms.cpp:105:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  105 |         for(j=0;j<ta.size();++j)
      |                 ~^~~~~~~~~~
mushrooms.cpp:108:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  108 |         for(j=0;j<tb.size();++j)
      |                 ~^~~~~~~~~~
mushrooms.cpp:111:12: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  111 |     while(i<ord.size())
      |           ~^~~~~~~~~~~
mushrooms.cpp:115:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  115 |         for(j=0;j<vc.size() && i<ord.size();++j,++i)
      |                 ~^~~~~~~~~~
mushrooms.cpp:115:33: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  115 |         for(j=0;j<vc.size() && i<ord.size();++j,++i)
      |                                ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...