# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
761478 | Khizri | 버섯 세기 (IOI20_mushrooms) | C++17 | 7 ms | 448 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=90;
vector<int>x,y;
x.pb(0);
int idx=0;
for(int i=1;i<3;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 t=1;
int a,b;
if(x.size()>=2){
a=x[0],b=x[1];
}
else{
t=0;
a=y[0],b=y[1];
}
for(int i=3;i<n-1;i+=2){
if(x.size()>=k||y.size()>=k) break;
idx=i+1;
vector<int>vt={i,a,i+1,b};
int cnt=use_machine(vt);
if(t){
if(cnt==0){
x.pb(i);
x.pb(i+1);
}
else if(cnt==1){
y.pb(i);
x.pb(i+1);
}
else if(cnt==2){
x.pb(i);
y.pb(i+1);
}
else{
y.pb(i);
y.pb(i+1);
}
}
else{
if(cnt==0){
y.pb(i);
y.pb(i+1);
}
else if(cnt==1){
x.pb(i);
y.pb(i+1);
}
else if(cnt==2){
y.pb(i);
x.pb(i+1);
}
else{
x.pb(i);
x.pb(i+1);
}
}
}
int ok=0;
int ans=x.size();
if(x.size()<y.size()){
swap(x,y);
ok=1;
}
vector<int>qr;
for(int i=idx+1;i<n;i++){
qr.pb(i);
if(qr.size()==x.size()||i==n-1){
if(x.size()<y.size()){
swap(x,y);
ok=1-ok;
}
vector<int>vt;
for(int j=0;j<qr.size();j++){
vt.pb(qr[j]);
vt.pb(x[j]);
}
int cnt=use_machine(vt);
if(!ok){
int say=(cnt+1)/2;
ans+=qr.size()-say;
if(cnt%2==0){
x.pb(vt[0]);
}
else{
y.pb(vt[0]);
}
}
else{
int say=(cnt+1)/2;
ans+=say;
if(cnt%2==0){
x.pb(vt[0]);
}
else{
y.pb(vt[0]);
}
}
qr.clear();
}
}
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |