# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
761382 | Khizri | 버섯 세기 (IOI20_mushrooms) | C++17 | 9 ms | 316 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "mushrooms.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define F first
#define S second
#define INF 1e18
#define all(v) (v).begin(),(v).end()
#define rall(v) (v).rbegin(),(v).rend()
#define pii pair<int,int>
#define pll pair<ll,ll>
#define OK cout<<"Ok"<<endl;
#define MOD (ll)(1e9+7)
const int mxn=2e4+5;
int color[mxn];
int count_mushrooms(int n) {
if(n<=490){
int ans=1;
for(int i=1;i<n-1;i+=2){
vector<int>vt={i,0,i+1};
int k=use_machine(vt);
ans+=(2-k);
}
if((n-1)%2){
vector<int>vt={n-1,0};
int k=use_machine(vt);
ans+=(1-k);
}
return ans;
}
int k=50;
vector<int>x,y;
x.pb(0);
int idx=0;
for(int i=1;i<n;i++){
if(x.size()>=k||y.size()>=k) break;
idx=i;
vector<int>vt={0,i};
if(use_machine(vt)==0){
x.pb(i);
color[i]=1;
}
else{
y.pb(i);
color[i]=2;
}
}
int ok=0;
if(x.size()<y.size()){
x=y;
ok=1;
}
color[0]=1;
int ans=0;
for(int i=0;i<=idx;i++){
if(color[i]==1){
ans++;
}
}
vector<int>qr;
for(int i=idx+1;i<n;i++){
qr.pb(i);
if(qr.size()==k-1||i==n-1){
vector<int>vt;
vt.pb(x[0]);
for(int j=0;j<qr.size();j++){
vt.pb(qr[j]);
vt.pb(x[j+1]);
}
/*
for(int v:vt){
cout<<v<<' ';
}
*/
//cout<<endl;
int cnt=use_machine(vt);
if(!ok){
int say=cnt/2;
ans+=qr.size()-say;
}
else{
int say=cnt/2;
ans+=say;
}
qr.clear();
}
}
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |