제출 #827051

#제출 시각아이디문제언어결과실행 시간메모리
827051wortelworm쌀 창고 (IOI11_ricehub)C++17
17 / 100
17 ms1772 KiB

#include "ricehub.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int besthub(int RiceCount, int Length, int RiceFields[], long long Budget)
{
    int count_before = 0;
    int count_after = 0;
    ll cost = 0;

    int best_count = 1;

    for (int i = 1; i < RiceCount; i++)
    {
        // set the hub at this field
        int x = RiceFields[i];
        ll distance = RiceFields[i] - RiceFields[i-1];

        // account for the prev_index now also having distance
        count_before++;

        cost += distance * count_before;
        cost -= distance * count_after;

        if (count_after > 0) {
            count_after --;
        }

        while (cost > Budget) {
            cost -= x - RiceFields[i-count_before];
            count_before--;

            if (count_before < 0) {
                cerr << "???\n\n";
                return -1;
            }
        }

        while (cost <= Budget && i+count_after < RiceCount-1) {
            count_after++;
            cost += RiceFields[i+count_after] - x;
        }

        if (cost > Budget) {
            cost -= RiceFields[i+count_after] - x;
            count_after--;
        }

        int current_count = count_before + count_after + 1;
        if (current_count > best_count) {
            best_count = current_count;
        }
    }

    return best_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...