# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1060484 | 2024-08-15T16:03:10 Z | Mihailo | Counting Mushrooms (IOI20_mushrooms) | C++14 | 1 ms | 344 KB |
#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
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 344 KB | Output is correct |
2 | Correct | 0 ms | 344 KB | Output is correct |
3 | Correct | 0 ms | 344 KB | Output is correct |
4 | Correct | 0 ms | 344 KB | Output is correct |
5 | Correct | 1 ms | 344 KB | Output is correct |
6 | Incorrect | 0 ms | 344 KB | Duplicate value 1 in the query array. |
7 | Halted | 0 ms | 0 KB | - |