제출 #761418

#제출 시각아이디문제언어결과실행 시간메모리
761418Khizri버섯 세기 (IOI20_mushrooms)C++17
80.14 / 100
7 ms384 KiB
#include "mushrooms.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define F first #define S second #define INF 1e18 #define all(v) (v).begin(),(v).end() #define rall(v) (v).rbegin(),(v).rend() #define pii pair<int,int> #define pll pair<ll,ll> #define OK cout<<"Ok"<<endl; #define MOD (ll)(1e9+7) const int mxn=2e4+5; int color[mxn]; int count_mushrooms(int n) { if(n<=490){ int ans=1; for(int i=1;i<n-1;i+=2){ vector<int>vt={i,0,i+1}; int k=use_machine(vt); ans+=(2-k); } if((n-1)%2){ vector<int>vt={n-1,0}; int k=use_machine(vt); ans+=(1-k); } return ans; } int k=140; vector<int>x,y; x.pb(0); int idx=0; for(int i=1;i<3;i++){ if(x.size()>=k||y.size()>=k) break; idx=i; vector<int>vt={0,i}; if(use_machine(vt)==0){ x.pb(i); color[i]=1; } else{ y.pb(i); color[i]=2; } } int t=1; int a,b; if(x.size()>=2){ a=x[0],b=x[1]; } else{ t=0; a=y[0],b=y[1]; } for(int i=3;i<n-1;i+=2){ if(x.size()>=k||y.size()>=k) break; idx=i+1; vector<int>vt={i,a,i+1,b}; int cnt=use_machine(vt); if(t){ if(cnt==0){ x.pb(i); x.pb(i+1); } else if(cnt==1){ y.pb(i); x.pb(i+1); } else if(cnt==2){ x.pb(i); y.pb(i+1); } else{ y.pb(i); y.pb(i+1); } } else{ if(cnt==0){ y.pb(i); y.pb(i+1); } else if(cnt==1){ x.pb(i); y.pb(i+1); } else if(cnt==2){ y.pb(i); x.pb(i+1); } else{ x.pb(i); x.pb(i+1); } } } int ok=0; int ans=x.size(); if(x.size()<y.size()){ x=y; ok=1; } vector<int>qr; for(int i=idx+1;i<n;i++){ qr.pb(i); if(qr.size()==k-1||i==n-1){ vector<int>vt; vt.pb(x[0]); for(int j=0;j<qr.size();j++){ vt.pb(qr[j]); vt.pb(x[j+1]); } int cnt=use_machine(vt); if(!ok){ int say=cnt/2; ans+=qr.size()-say; } else{ int say=cnt/2; ans+=say; } qr.clear(); } } return ans; } /* 20 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 */

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

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:37:20: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   37 |         if(x.size()>=k||y.size()>=k) break;
      |            ~~~~~~~~^~~
mushrooms.cpp:37:33: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   37 |         if(x.size()>=k||y.size()>=k) break;
      |                         ~~~~~~~~^~~
mushrooms.cpp:59:20: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   59 |         if(x.size()>=k||y.size()>=k) break;
      |            ~~~~~~~~^~~
mushrooms.cpp:59:33: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   59 |         if(x.size()>=k||y.size()>=k) break;
      |                         ~~~~~~~~^~~
mushrooms.cpp:109:21: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
  109 |         if(qr.size()==k-1||i==n-1){
      |            ~~~~~~~~~^~~~~
mushrooms.cpp:112:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  112 |             for(int j=0;j<qr.size();j++){
      |                         ~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...