Submission #1238680

#TimeUsernameProblemLanguageResultExecution timeMemory
1238680moondarksideCounting Mushrooms (IOI20_mushrooms)C++20
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
using namespace std;


int use_machine(vector<int> x);






int count_mushrooms(int n){
    int checked=2;
    if(n==2){
        return 2-use_machine(vector<int>{0,1});
    }
    
    vector<int> A={0};
    vector<int> B;
    
    if(use_machine(vector<int>{0,1})==0){
        A.push_back(1);
    }
    else{
        checked=3;
        B.push_back(1);
        if(use_machine(vector<int>{0,2})==0){
            A.push_back(2);
        }
        else{
            B.push_back(2);
        }
    }
    
    
    if (n<232){
        
        for(int i=checked;i<n;i++){
            if(use_machine(vector<int>{0,i})==0){
                A.push_back(i);
            }
        }
        return A.size();
    }
    
    
    for(;checked<80;checked+=2){
        if(A.size()>1){
            int val=use_machine(vector<int>{A[0],checked,A[1],checked+1});
            if(val%2==0){
                A.push_back(checked+1);
            }
            else{
                B.push_back(checked+1);
            }
            
            if(val>1){
                B.push_back(checked);
            }
            else{
                A.push_back(checked);
            }
            
        }
        else{
            int val=use_machine(vector<int>{B[0],checked,B[1],checked+1});
            
            if(val%2==0){
                B.push_back(checked+1);
            }
            else{
                A.push_back(checked+1);
            }
            
            if(val>1){
                A.push_back(checked);
            }
            else{
                B.push_back(checked);
            }
            
        }
    }
    
        
        
        
        int value=A.size();
        bool running=true;
        
        while(running){
            bool inverse=false;
            vector<int> Calc=A;
            if(B.size()>A.size()){
                Calc=B;
                inverse=true;
            }
            
            vector<int> Question;
            int inv=0;
            
            for(int i=0;i<Calc.size();i++){
                if(checked==n){
                    running=false;
                }
                else{
                    inv++;
                    Question.push_back(checked);
                    checked++;
                }
                Question.push_back(Calc[i]);
            }
            
            int val=use_machine(Question);
            if(val%2==1){
                if(inverse){
                    A.push_back(Question[0]);
                }
                else{
                    B.push_back(Question[0]);
                }
                val++;
            }
            else{
                if(!inverse){
                    A.push_back(Question[0]);
                }
                else{
                    B.push_back(Question[0]);
                }
            }
            val=val/2;
            
            if(!inverse){
                val=inv-val;
            }
            
            value+=val;
        }
        
        
        
        return value;
        
}

vector<int> Type;
int q=0;

int use_machine(vector<int> x){
    q++;
    int v=0;
    for(int i=1;i<x.size();i++){
        if(Type[x[i]]!=Type[x[i-1]]){
            v++;
        }
    }
    return v;
}


int main()
{
    for(int i=0;i<1000;i++){
        rand();
    }
    
    Type.push_back(0);
    for(int i=0;i<20001;i++){
        Type.push_back(rand()%2);
    }
    int v;
    for(int i=0;i<20000;i++){
        v+=1-Type[i];
    }
    cout<<v<<"\n";
    
    std::cout<<count_mushrooms(20000);
    
    cout<<" "<<q;

    return 0;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccmeYnnP.o: in function `use_machine(std::vector<int, std::allocator<int> >)':
stub.cpp:(.text+0x150): multiple definition of `use_machine(std::vector<int, std::allocator<int> >)'; /tmp/cca5fHyd.o:mushrooms.cpp:(.text+0x0): first defined here
/usr/bin/ld: /tmp/ccmeYnnP.o: in function `main':
stub.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cca5fHyd.o:mushrooms.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status