답안 #1021612

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1021612 2024-07-12T21:46:24 Z Ahmed_Solyman 버섯 세기 (IOI20_mushrooms) C++14
0 / 100
128 ms 868 KB
/*
In the name of Allah
made by: Ahmed_Solyman
*/
#include <bits/stdc++.h>
 
using namespace std;
typedef long long ll;
 
int use_machine(vector<int>x);
int count_mushrooms(int n){
    if(n<=226){
        int ret=1;
        for(int i=1;i<n;i++){
            ret+=1-use_machine({0,i});
        }
        return ret;
    }
    int ret=0,k=94;
    vector<int>v[2];
    v[0].push_back(0);
    for(int i=1;i<=2;i++){
        if(use_machine({0,i})==0)v[0].push_back(i);
        else v[1].push_back(i);
    }
    bool typ;
    int x,y;
    if(v[0].size()>=2){
        typ=0;
        x=v[0][0];y=v[0][1];
    }
    else{
        typ=1;
        x=v[1][0];y=v[1][1];
    }
    for(int i=3;i<=2*k-2;i+=2){
        int h=use_machine({x,i,y,i+1});
        if(h==0){
            v[typ].push_back(i);
            v[typ].push_back(i+1);
        }
        if(h==1){
            v[typ^1].push_back(i);
            v[typ].push_back(i+1);
        }
        if(h==2){
            v[typ].push_back(i);
            v[typ^1].push_back(i+1);
        }
        if(h==3){
            v[typ^1].push_back(i);
            v[typ^1].push_back(i+1);
        }
    }
    auto f=[&](int l,int r){
        vector<int>p;
        vector<int>&g=(v[0].size()>v[1].size()?v[0]:v[1]);
      	if(v[0].size()>v[1].size())typ=0;
      	else typ=1;
      	assert(r-l+1<=(int)g.size());
        for(int i=l;i<=r;i++){
            p.push_back(i);
            p.push_back(g[i-l]);
        }
        int u=use_machine(p);
        if(u&1)v[typ^1].push_back(l);
        else v[typ].push_back(l);
        u=(u+1)/2;
        if(typ)return u;
        else return r-l+1-u;
    };
    ret=(int)v[0].size();
  	int mx=max(v[0].size(),v[1].size());
  	int i=2*k-1;
 	vector<bool>ok(n);
 	for(int i=0;i<2*k-1;i++)ok[i]=1;
 	while(i<n){
     	ret+=f(i,i);
      	i=i+1;
    }
    return ret;
}

Compilation message

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:73:8: warning: unused variable 'mx' [-Wunused-variable]
   73 |    int mx=max(v[0].size(),v[1].size());
      |        ^~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 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 1 ms 344 KB Output is correct
6 Partially correct 13 ms 344 KB Output is partially correct
7 Partially correct 113 ms 792 KB Output is partially correct
8 Partially correct 126 ms 792 KB Output is partially correct
9 Partially correct 128 ms 464 KB Output is partially correct
10 Partially correct 125 ms 868 KB Output is partially correct
11 Incorrect 116 ms 736 KB Answer is not correct.
12 Halted 0 ms 0 KB -