제출 #693319

#제출 시각아이디문제언어결과실행 시간메모리
693319NemanjaSo2005버섯 세기 (IOI20_mushrooms)C++14
0 / 100
0 ms208 KiB
#include "mushrooms.h"
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll N,sta[20005];
bool inv;
vector<int> x,v,b1,b2,nep;
int count_mushrooms(int n){
   N=n;
   sta[0]=1;
   for(int i=0;i+2<N;i+=2){
      x.clear();
      x.push_back(i);
      x.push_back(i+1);
      x.push_back(i+2);
      int ans=use_machine(x);
      if(ans==0){
         sta[i+1]=sta[i];
         sta[i+2]=sta[i];
      }
      if(ans==2){
         sta[i+1]=sta[i]^1;
         sta[i+2]=sta[i];
      }
      if(ans==1){
         sta[i+1]=2;
         sta[i+2]=sta[i]^1;
      }
   }
   if(N%2==0){
      x.clear();
      x.push_back(N-1);
      x.push_back(N-2);
      sta[N-1]=sta[N-2]^use_machine(x);
   }
   for(int i=0;i<N;i++){
      if(sta[i]==0)
         b2.push_back(i);
      if(sta[i]==1)
         b1.push_back(i);
      if(sta[i]==2)
         nep.push_back(i);
   }
   if(b1.size()>b2.size()){
      v=b1;
      inv=1;
   }
   else{
      inv=0;
      v=b2;
   }
   x.clear();
   x.push_back(v[v.size()-1]);
   v.pop_back();
   for(int i=0;i<nep.size();i++){
      x.push_back(nep[i]);
      x.push_back(v[v.size()-1]);
      v.pop_back();
   }
   int res=use_machine(x)/2;
   if(inv)
      res=nep.size()-res;
   for(int i=0;i<N;i++)
      if(sta[i]==1)
         res++;
   return res;
}

컴파일 시 표준 에러 (stderr) 메시지

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:55:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   55 |    for(int i=0;i<nep.size();i++){
      |                ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...