답안 #308291

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
308291 2020-09-30T20:24:14 Z dekanycsaba 버섯 세기 (IOI20_mushrooms) C++14
0 / 100
2 ms 256 KB
#include "mushrooms.h"
#include<vector>
using namespace std;
int aszam=0;
int bszam=0;
int eredeti=0;
vector<int> A;
vector<int> B;
int count_mushrooms(int n) {
	std::vector<int> m;
	int c1,c2;
	A.push_back(0);
	aszam++;
	if(n==2)
    {
        m={0,1};
        c1=use_machine(m);
        if(c1==0)
        {
           aszam=2;
        }
        else{
            aszam=1;
        }
    }
    else{
      for(int i=1;i<=2;i++)
       {
           m.push_back(0);
           m.push_back(i);
           c1=use_machine(m);
           if(c1==0)
           {
              A.push_back(i);
              aszam++;
           }
           else{
            B.push_back(i);
            bszam++;
           }
           m.clear();
       }
    }
    int tartunk=2;
       if(aszam>bszam)
       {
           while(tartunk<=n-1 && tartunk<=200)
           {
               tartunk++;
               if(tartunk==n-1)
               {
                   m.push_back(A[0]);
                   m.push_back(tartunk);
                   m.push_back(A[1]);
                   c1=use_machine(m);
                   if(c1>0)
                   {
                       B.push_back(tartunk);
                       bszam++;
                   }
                   else{
                    A.push_back(tartunk);
                    aszam++;
                   }
                   m.clear();

               }
               else if(tartunk<n-1 && tartunk<=200){
                   m.push_back(A[0]);
                   m.push_back(tartunk);
                   m.push_back(A[1]);
                   tartunk++;
                   m.push_back(tartunk);
                   c1=use_machine(m);
                   if(c1==0)
                   {
                       aszam++;
                       aszam++;
                       A.push_back(tartunk-1);
                       A.push_back(tartunk);
                   }
                   else if(c1==1)
                   {
                       aszam++;
                       bszam++;
                       A.push_back(tartunk-1);
                       B.push_back(tartunk);
                   }
                   else if(c1==2)
                   {
                       aszam++;
                       bszam++;
                       B.push_back(tartunk-1);
                       A.push_back(tartunk);
                   }
                   else{
                    bszam++;
                    bszam++;
                    B.push_back(tartunk-1);
                    B.push_back(tartunk);
                   }
                   m.clear();
               }
           }
       }
       else{
            while(tartunk<=n-1 && tartunk<=200)
           {
               tartunk++;
               if(tartunk==n-1)
               {
                   m.push_back(B[0]);
                   m.push_back(tartunk);
                   m.push_back(B[1]);
                   c1=use_machine(m);
                   if(c1>0)
                   {
                       A.push_back(tartunk);
                       aszam++;
                   }
                   else{
                    B.push_back(tartunk);
                    bszam++;
                   }
                   m.clear();

               }
               else if(tartunk<n-1 && tartunk<=200){
                   m.push_back(B[0]);
                   m.push_back(tartunk);
                   m.push_back(B[1]);
                   tartunk++;
                   m.push_back(tartunk);
                   c1=use_machine(m);
                   if(c1==0)
                   {
                       bszam++;
                       bszam++;
                       B.push_back(tartunk-1);
                       B.push_back(tartunk);
                   }
                   else if(c1==1)
                   {
                       bszam++;
                       aszam++;
                       B.push_back(tartunk-1);
                       A.push_back(tartunk);
                   }
                   else if(c1==2)
                   {
                       aszam++;
                       bszam++;
                       A.push_back(tartunk-1);
                       B.push_back(tartunk);
                   }
                   else{
                    aszam++;
                    aszam++;
                    A.push_back(tartunk-1);
                    A.push_back(tartunk);
                   }
                   m.clear();
               }
           }
       }
       if(tartunk<n)
       {
           tartunk=200;
           if(aszam>bszam)
           {
               eredeti=aszam;
               while(tartunk!=n-1)
               {
                   c2=tartunk;
                   if(n-1-tartunk<eredeti)
                   {
                       for(int i=0;i<n-1-c2;i++)
                       {
                           m.push_back(A[i]);
                           tartunk++;
                           m.push_back(tartunk);
                       }
                       c1=use_machine(m);
                       if(c1%2==1)
                       {
                         bszam=bszam+1+(c1-1)/2;
                         aszam=n-1-1-c2-(c1-1)/2;
                       }
                       else{
                        bszam=bszam+c1/2;
                        aszam=n-1-c2-c1/2;
                       }
                       m.clear();
                   }
                   else{
                        for(int i=0;i<eredeti;i++)
                       {
                           m.push_back(A[i]);
                           tartunk++;
                           m.push_back(tartunk);
                       }
                       c1=use_machine(m);
                       if(c1%2==1)
                       {
                         bszam=bszam+1+(c1-1)/2;
                         aszam=n-1-1-c2-(c1-1)/2;
                       }
                       else{
                        bszam=bszam+c1/2;
                        aszam=n-1-c2-c1/2;
                       }
                       m.clear();
                   }
               }
           }
           else{
                eredeti=bszam;
               while(tartunk!=n-1)
               {
                   c2=tartunk;
                   if(n-1-tartunk<eredeti)
                   {
                       for(int i=0;i<n-1-c2;i++)
                       {
                           m.push_back(B[i]);
                           tartunk++;
                           m.push_back(tartunk);
                       }
                       c1=use_machine(m);
                       if(c1%2==1)
                       {
                        aszam=aszam+1+(c1-1)/2;
                         bszam=n-1-1-c2-(c1-1)/2;
                       }
                       else{
                        aszam=aszam+c1/2;
                        bszam=n-1-c2-c1/2;
                       }
                       m.clear();
                   }
                   else{
                        for(int i=0;i<eredeti;i++)
                       {
                           m.push_back(B[i]);
                           tartunk++;
                           m.push_back(tartunk);
                       }
                       c1=use_machine(m);
                       if(c1%2==1)
                       {
                         aszam=aszam+1+(c1-1)/2;
                         bszam=n-1-1-c2-(c1-1)/2;
                       }
                       else{
                        aszam=aszam+c1/2;
                        bszam=n-1-c2-c1/2;
                       }
                       m.clear();
                   }
               }
           }
       }
	return aszam;
}

# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 256 KB Output is correct
2 Correct 1 ms 256 KB Output is correct
3 Correct 1 ms 256 KB Output is correct
4 Correct 0 ms 256 KB Output is correct
5 Correct 1 ms 256 KB Output is correct
6 Incorrect 2 ms 256 KB Answer is not correct.
7 Halted 0 ms 0 KB -