# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1052056 | 2024-08-10T11:25:32 Z | Huseyn123 | 버섯 세기 (IOI20_mushrooms) | C++17 | 1 ms | 344 KB |
#include "mushrooms.h" #include <bits/stdc++.h> using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int count_mushrooms(int n) { vector<int> c; for(int i=1;i<n;i++){ c.push_back(i); } shuffle(c.begin(),c.end(),rng); vector<int> v0,v1; int cnt=0; for(auto x:c){ int h=use_machine({x,0}); if(h==0){ v0.push_back(x); } else{ v1.push_back(x); } cnt++; int mx=max((int)v0.size(),(int)v1.size()); if(mx>1 && cnt+(n-cnt-1)/(mx-1)<400){ break; } } int res=(int)v0.size(); vector<int> v=v0; int tp=0; if((int)v1.size()>(int)v0.size()){ tp=1; v=v1; } vector<int> d; for(int i=cnt;i<n-1;i++){ d.push_back(v[(int)d.size()/2]); d.push_back(c[i]); if((int)d.size()==2*v.size()-2){ d.push_back(v.back()); int h=use_machine(d); d.clear(); if(tp){ res+=h/2; } else{ res+=(int)d.size()/2-h/2; } } } if((int)d.size()>0){ d.push_back(v.back()); int h=use_machine(d); d.clear(); if(tp){ res+=h; } else{ res+=(int)d.size()/2-h; } } return res; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 344 KB | Answer is not correct. |
2 | Halted | 0 ms | 0 KB | - |