제출 #859469

#제출 시각아이디문제언어결과실행 시간메모리
859469NatdanaiHSRarest Insects (IOI22_insects)C++17
100 / 100
34 ms856 KiB
  #include "insects.h"
  #include <bits/stdc++.h>
  using namespace std;
  vector<bool> flag(2020,false);
  int ans=1,snow=1,mxans=0;
  int min_cardinality(int N) {
    flag[0]=true;
    move_inside(0);
    for(int i=1;i<N;i++){
      move_inside(i);
      if(press_button()!=1)move_outside(i);
      else snow++,flag[i]=true;
    }
    int l=1,r=(N+snow-1)/snow;
    while(l<=r){
      int mid=(l+r)/2;
      stack<int> rollA,rollB;
      int cnt=0;
      for(int i=0;i<N;i++){
          if(cnt==(mid-ans)*snow)break;
          if(flag[i])continue;
          move_inside(i);
          if(press_button()>mid)move_outside(i),flag[i]=true,rollA.push(i);
          else{
              cnt++;
              rollB.push(i);
          }
      }
      if(cnt==(mid-ans)*snow){
          ans=mid;
          l=mid+1;
          while(rollA.size()){
              flag[rollA.top()]=!flag[rollA.top()];
              rollA.pop();
          }
          while(rollB.size()){
              flag[rollB.top()]=!flag[rollB.top()];
              rollB.pop();
          }
      }
      else{
          r=mid-1;
          while(rollB.size()){
              move_outside(rollB.top());
              rollB.pop();
          }
      }
    }
    return ans;
  }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...