Submission #1301144

#TimeUsernameProblemLanguageResultExecution timeMemory
1301144b_malinowskiRice Hub (IOI11_ricehub)C++20
0 / 100
0 ms332 KiB
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;

bool Spr(const vector<i64>& fields, i64 B, int amo)
{
    if (amo == 0) return true;

    i64 cost = 0;
    for (int i = 0; i < amo; i++)
        cost += llabs(fields[i] - fields[amo / 2]);

    if (cost <= B) return true;

    for (int i = 1; i + amo <= (int)fields.size(); i++)
    {
        cost += fields[i + amo - 1] - 2LL * fields[i + amo / 2] + fields[i - 1];
        cost += (fields[amo / 2 + 1] - fields[amo / 2]) * (1LL * (amo / 2 * 2 - amo));
        if (cost <= B) return true;
    }
    return false;
}

long long besthub(int R, int L, int X[], long long B)
{
    vector<i64> fields(R);
    for (int i = 0; i < R; i++) fields[i] = X[i];

    int low = 0, high = R;
    while (low < high)
    {
        int mid = (low + high + 1) / 2;
        if (Spr(fields, B, mid))
            low = mid;
        else
            high = mid - 1;
    }
    return low;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...