Submission #827097

# Submission time Handle Problem Language Result Execution time Memory
827097 2023-08-16T08:43:54 Z wortelworm Rice Hub (IOI11_ricehub) C++17
17 / 100
9 ms 1748 KB
#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 --;
        }

        auto add_after = [&](){
            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--;
            }
        };


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

            add_after();
        }
        add_after();

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

    return best_count;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 316 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 0 ms 308 KB Output is correct
4 Correct 0 ms 316 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 308 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 212 KB Output is correct
16 Correct 0 ms 212 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 1 ms 212 KB Output is correct
19 Correct 1 ms 308 KB Output is correct
20 Correct 0 ms 212 KB Output is correct
21 Correct 1 ms 212 KB Output is correct
22 Correct 0 ms 212 KB Output is correct
23 Correct 0 ms 212 KB Output is correct
24 Correct 0 ms 212 KB Output is correct
25 Correct 0 ms 212 KB Output is correct
26 Correct 0 ms 212 KB Output is correct
27 Incorrect 0 ms 212 KB Output isn't correct
28 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Incorrect 0 ms 212 KB Output isn't correct
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 464 KB Output is correct
2 Correct 2 ms 468 KB Output is correct
3 Correct 9 ms 1744 KB Output is correct
4 Correct 9 ms 1748 KB Output is correct
5 Incorrect 4 ms 724 KB Output isn't correct
6 Halted 0 ms 0 KB -