답안 #1064331

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1064331 2024-08-18T11:30:36 Z new_acc 버섯 세기 (IOI20_mushrooms) C++14
0 / 100
1 ms 344 KB
#include "mushrooms.h"
#include <bits/stdc++.h>
using namespace std;
typedef vector<int> vi;
int count_mushrooms(int n) {
	int c1 = use_machine({0,1});
    if(n==2) return 2-c1;
	int c2 = use_machine({0,2});
    if(n==3) return 3-c1-c2;
    vi x[2];
    x[0].push_back(0);
    if(c1) x[1].push_back(1);
    else x[0].push_back(1);
    if(c2) x[1].push_back(2);
    else x[0].push_back(2);
    bool ok=1;
    int a=0,b=0;
    if(!c1) a=0,b=1;
    else{
        if(!c2) a=0,b=2;
        else ok^=1,a=1,b=2;
    }
    int g=3;
    for(int i=3;i<n-1;i+=2){
        if(x[0].size()>=50 or x[1].size()>=50) break;
        int c3=use_machine({i,a,i+1,b});      
        if((c3&1)) x[ok].push_back(i);
        else x[ok^1].push_back(i);
        if((c3&2)) x[ok].push_back(i+1);
        else x[ok^1].push_back(i+1);
        g=i+2;
    }
    int res=x[0].size();
    vi pom=x[0];
    bool odw=0;
    if(x[1].size()>x[0].size()){
        odw=1;
        pom=x[1];
    }
    for(int i=g;i<n;){
        vi pom2;
        int i2;
        for(i2=0;i2+i<n and i2<(int)pom.size();i2++){
            pom2.push_back(pom[i2]);
            pom2.push_back(i+i2);
        }
        i+=i2; 
        int c3=use_machine(pom2);
        if(!odw) c3=pom2.size()-c3;
        res+=(c3+1)/2;
    }
	return res;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Incorrect 1 ms 344 KB Answer is not correct.
7 Halted 0 ms 0 KB -