Submission #718050

#TimeUsernameProblemLanguageResultExecution timeMemory
718050vjudge1Growing Vegetables is Fun 4 (JOI21_ho_t1)C++14
40 / 100
1093 ms8100 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n;
vector<int> ml;
vector<int> generate_ml(){
    vector<int> fin;
    for(int i=0; i<n; i++){
        fin.push_back(ml[i]);
    }
    return fin;
}
int focus(vector<int> &ai_list, int focus){
    int total = 0;
    vector<int> b = {focus, focus};
    while((b[0] > 0) && (ai_list[b[0]-1] < ai_list[b[0]])){
        b[0]--;
    }
    while((b[1] < n-1) && (ai_list[b[1]] > ai_list[b[1]+1])){
        b[1]++;
    }
    while(b[0]!=0 || b[1]!=n-1){
        int left_side, right_side;
        if (b[0] == 0){
            left_side = 100000000000000;
        }
        else {
            left_side = ai_list[b[0]-1] - ai_list[b[0]];
        }
        if (b[1] == n-1){
            right_side = 100000000000000;
        }
        else{
            right_side = ai_list[b[1]+1] - ai_list[b[1]];
        }
        int amount = min(left_side, right_side)+1;
        total+=amount;
        ai_list[b[0]] += amount;
        ai_list[b[1]] += amount;
        while((b[0] > 0) && (ai_list[b[0]-1] < ai_list[b[0]])){
            b[0]--;
        }
        while((b[1] < n-1) && (ai_list[b[1]] > ai_list[b[1]+1])){
            b[1]++;
        }
    }
    return total;
}
signed main(){
    cin>>n;
    for (int i=0; i<n; i++) {
        int x; cin>>x;
        ml.push_back(x);
    }
    vector<int> main_list = generate_ml();
    int mn = focus(main_list, 0);
    for(int i=0; i<n; i++){
        main_list = generate_ml();
        int cnt = focus(main_list, i);
        if (cnt < mn) mn = cnt;
    }

    cout<<mn<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...