제출 #1132874

#제출 시각아이디문제언어결과실행 시간메모리
1132874StefanSebez버섯 세기 (IOI20_mushrooms)C++20
10 / 100
54 ms424 KiB
#include <bits/stdc++.h> #include "mushrooms.h" using namespace std; #define fi first #define se second #define pb push_back #define ll long long #define ld long double mt19937 rng(time(0)); int K=3; int count_mushrooms(int n){ int res=1; int a[n+10]={0}; for(int i=1;i<min(K,n);i++){ vector<int>temp={0,i}; if(use_machine(temp)==1) a[i]=1; else res++; } int num[2]={0}; for(int i=0;i<min(K,n);i++){ num[a[i]]++; //printf("%i ",a[i]); } //printf("\n"); //printf("%i %i\n",num[0],num[1]); if(num[0]>=num[1]){ vector<int>ind; for(int i=0;i<min(K,n);i++) if(a[i]==0) ind.pb(i); //for(auto i:ind) printf("%i ",i);printf("\n"); int k=ind.size(); //int poslednji=n; for(int i=K;i<n;i+=k-1){ //printf("%i\n",i); //poslednji=i+k-1; vector<int>temp={ind[0]}; for(int j=i,ct=1;j<min(i+k-1,n);j++){ temp.pb(j); temp.pb(ind[ct++]); } //for(auto j:temp) printf("%i ",j);printf("\n"); int x=use_machine(temp); int sz=temp.size(); //printf("%i\n",K-x); res+=sz-1-x>>1; } //printf("%i %i\n",res,poslednji); /*for(int i=poslednji;i<n;i++){ vector<int>temp={0,i}; if(use_machine(temp)==1) a[i]=1; else res++; }*/ } else{ vector<int>ind; for(int i=0;i<min(K,n);i++) if(a[i]==1) ind.pb(i); //for(auto i:ind) printf("%i ",i);printf("\n"); int k=ind.size(); //int poslednji=n; for(int i=K;i<n;i+=k-1){ //printf("%i\n",i); //poslednji=i+k-1; vector<int>temp={ind[0]}; for(int j=i,ct=1;j<min(i+k-1,n);j++){ temp.pb(j); temp.pb(ind[ct++]); } //for(auto j:temp) printf("%i ",j);printf("\n"); int x=use_machine(temp); //printf("%i\n",K-x); res+=x>>1; } //printf("%i %i\n",res,poslednji); /*for(int i=poslednji;i<n;i++){ vector<int>temp={0,i}; if(use_machine(temp)==1) a[i]=1; else res++; }*/ } return res; } int use_machine(std::vector<int> x);
#Verdict Execution timeMemoryGrader output
Fetching results...