Submission #1060484

#TimeUsernameProblemLanguageResultExecution timeMemory
1060484MihailoCounting Mushrooms (IOI20_mushrooms)C++14
0 / 100
1 ms344 KiB
#include <cstdio> #include <cstdlib> #include <cstdarg> #include <bits/stdc++.h> #define mp make_pair #define pb push_back #define xx first #define yy second #define pll pair<long long, long long> #define MOD 1000000007 typedef long long ll; using namespace std; mt19937 mt(time(nullptr)); int use_machine(vector<int> x); ll N, reached, sol; vector<ll> A, B; ll next() { return ++reached; } void identifyA() { vector<int> v; ll rez; while(A.size()<140&&B.size()<140) { v.clear(); v.pb(A[0]); v.pb(next()); v.pb(A[1]); v.pb(next()); rez=use_machine(v); if(rez&1) { B.pb(reached-1); } else { A.pb(reached-1); } if(rez&2) { B.pb(reached-2); } else { A.pb(reached-2); } } } void identifyB() { vector<int> v; ll rez; while(A.size()<140&&B.size()<140) { v.clear(); v.pb(B[0]); v.pb(next()); v.pb(B[1]); v.pb(next()); rez=use_machine(v); if(rez&1) { A.pb(reached-1); } else { B.pb(reached-1); } if(rez&2) { A.pb(reached-2); } else { B.pb(reached-2); } } } void testA() { vector<int> v; sol=A.size(); while(reached<N) { v.clear(); v.pb(A[0]); for(int i=1; i<A.size()&&reached<N; i++) { v.pb(next()); v.pb(A[i]); } sol+=(v.size()-use_machine(v))/2; } } void testB() { vector<int> v; sol=B.size(); while(reached<N) { v.clear(); v.pb(B[0]); for(int i=1; i<B.size()&&reached<N; i++) { v.pb(next()); v.pb(B[i]); } sol+=(v.size()-use_machine(v))/2; } } int count_mushrooms(int _N) { N=_N; vector<int> v; if(N<280) { sol=1; for(int i=1; i<N; i++) { v.clear(); v.pb(0); v.pb(i); if(!use_machine(v)) sol++; } return sol; } A.pb(0); v.pb(0); v.pb(1); if(use_machine(v)) { B.pb(1); v.pb(2); if(use_machine(v)==1) { B.pb(2); identifyB(); } else { A.pb(2); identifyA(); } } else { A.pb(1); identifyA(); } if(A.size()>B.size()) { testA(); } else { testB(); sol=N-sol; } return sol; }

Compilation message (stderr)

mushrooms.cpp: In function 'void testA()':
mushrooms.cpp:80:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   80 |   for(int i=1; i<A.size()&&reached<N; i++) {
      |                ~^~~~~~~~~
mushrooms.cpp: In function 'void testB()':
mushrooms.cpp:94:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   94 |   for(int i=1; i<B.size()&&reached<N; i++) {
      |                ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...