# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
364319 | Jasiekstrz | Counting Mushrooms (IOI20_mushrooms) | C++17 | 1 ms | 384 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#include "mushrooms.h"
#define fi first
#define se second
using namespace std;
const int K=200;
mt19937 gen(2137);
inline int p(int l,int r)
{
return uniform_int_distribution<int>{l,r}(gen);
}
int count_mushrooms(int n)
{
int i;
int ans=1;
bool xd=false;
vector<int> tmp;
vector<int> a={0},b;
vector<int> tt;
for(i=1;i<n;i++)
tmp.push_back(i);
shuffle(tmp.begin(),tmp.end(),gen);
for(i=1;i<=K;i++)
{
if(use_machine((vector<int>){0,tmp.back()}))
b.push_back(tmp.back());
else
{
a.push_back(tmp.back());
ans++;
}
tmp.pop_back();
}
if(b.size()>a.size())
swap(a,b),xd=true;
while(!tmp.empty())
{
tt.clear();
tt.push_back(a[0]);
for(i=1;i<a.size() && !tmp.empty();i++)
tt.push_back(tmp.back()),tt.push_back(a[i]),tmp.pop_back();
if(xd)
ans+=use_machine(tt)/2;
else
ans+=a.size()-1-use_machine(tt)/2;
}
return ans;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |