제출 #1330158

#제출 시각아이디문제언어결과실행 시간메모리
1330158alexaaa쌀 창고 (IOI11_ricehub)C++20
0 / 100
0 ms344 KiB
#include "ricehub.h"
#include<bits/stdc++.h>
using namespace std;
int besthub(int R, int L, int X[], long long B)
{
  int max_count = 0;
  int b_first = 0;
  int a_first = 2;
  for(int i = X[0]; i <= L; i ++){
    int count = 0;
    int total = 0;
    bool b_finish = false;
    bool a_finish = false;
    int b = b_first;
    int a = a_first;
    while(true){
      if(b < 0){
        b_finish = true;
      }
      if(a >= R){
        a_finish = true;
      }
      if(a_finish == true || b_finish == true){
        max_count = max(count, max_count);
        if(i+1 > X[a_first]){
            a_first++;
            b_first++;
          }
        if(i+1 > X[R-1]){
          b_first = R - 1;
        }
        break;
      }
      if(b_finish == false && a_finish == false){
        total += min(abs(i - X[b]),abs(i - X[a]));
        if(abs(i - X[b]) > abs(i - X[a])){
          b ++;
        }
        else{
          a--;
        }
        if(total > B){
          max_count = max(max_count,count);
          if(i+1 > X[a_first]){
            a_first++;
            b_first++;
          }
          if(i+1 > X[R-1]){
            b_first = R - 1;
          }
          break;

        }
        count ++;
      }
      else if(b_finish == false && a_finish == true){
        total+= abs(i - X[b]);
        if(total > B){
          max_count = max(max_count,count);
          if(i+1 > X[a_first]){
            a_first++;
            b_first++;
          }
          if(i+1 > X[R-1]){
            b_first = R - 1;
          }
          break;

        }
        count ++;


      }
      else if(b_finish == true && a_finish == false){
        total+= abs(i - X[a]);
        if(total > B){
          max_count = max(max_count,count);
          if(i+1 > X[a_first]){
            a_first++;
            b_first++;
          }
          if(i+1 > X[R-1]){
            b_first = R - 1;
          }
          break;

        }
        count ++;

      }
      b--;
      a++;


    }
    
  }

  return max_count;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...