답안 #1052284

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1052284 2024-08-10T13:01:07 Z epicci23 버섯 세기 (IOI20_mushrooms) C++17
0 / 100
1 ms 444 KB
#include "bits/stdc++.h"
//#define int long long
#define all(v) v.begin() , v.end()
#define sz(a) (int)a.size()
#include "mushrooms.h"
using namespace std;

const int S = 142;

int count_mushrooms(int n) {
  vector<int> v[2];
  int ansA=0;
  v[0].push_back(0);
  for(int i=1;i<n;){
  	if(i==n-1){
      if(use_machine({0,i})) v[1].push_back(i);
      else v[0].push_back(i);
      i++;
  	  break;
  	}
    if(sz(v[0])<2 && sz(v[1])<2){
      if(use_machine({0,i})) v[1].push_back(i);
      else v[0].push_back(i);
      i++;
      continue;
    }
    else if(sz(v[0])<S && sz(v[1])<S){
      if(sz(v[0])>=2){
        int res = use_machine({v[0][0],i,v[0][1],i+1});
        if(res&1) v[1].push_back(i+1);
        else v[0].push_back(i+1);
        if(res&2) v[1].push_back(i);
        else v[0].push_back(i);
        i+=2;
      }
      else{
        int res = use_machine({v[1][0],i,v[1][1],i+1});
        if(res&1) v[0].push_back(i+1);
        else v[1].push_back(i+1);
        if(res&2) v[0].push_back(i);
        else v[1].push_back(i);
        i+=2;
      }
      continue;
    }
    else{
      if(sz(v[0])>=S){
      	vector<int> cur;
      	cur.push_back(v[0][0]);
      	int p=0;
        while(i<n-1 && p<S){
          cur.push_back(i++);
          cur.push_back(v[0][++p]);
        }
        cur.push_back(i++);
        int res=use_machine(cur);
        if(!(res&1)) ansA++;
        ansA+=sz(cur)/2-1-res/2;
      }
      else{
        vector<int> cur;
      	cur.push_back(v[1][0]);
      	int p=0;
        while(i<n-1 && p<S){
          cur.push_back(i++);
          cur.push_back(v[1][++p]);
        }
        cur.push_back(i++);
        int res=use_machine(cur);
        if(res&1) ansA++;
        ansA+=res/2;
      }
    }
  }
  return sz(v[0]) + ansA;
}
# 결과 실행 시간 메모리 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 0 ms 344 KB Output is correct
6 Correct 1 ms 344 KB Output is correct
7 Incorrect 0 ms 444 KB Duplicate value 0 in the query array.
8 Halted 0 ms 0 KB -