제출 #1117469

#제출 시각아이디문제언어결과실행 시간메모리
1117469secretwood01Growing Vegetables is Fun 4 (JOI21_ho_t1)Java
0 / 100
124 ms11528 KiB
import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter pw = new PrintWriter(System.out);
        int N = Integer.parseInt(br.readLine());
        int [] Arr = new int[N];
        StringTokenizer st;
        st = new StringTokenizer(br.readLine());
        for (int i=0;i<N;i++) {
            Arr[i] = Integer.parseInt(st.nextToken());
        }
        long [] PVals = new long[N];
        long [] PAdd = new long [N];
        PVals[0] = Arr[0];
        PAdd[0] = 0;
        for (int i=1;i<N;i++) {
            PVals[i] = Arr[i]+PAdd[i-1];
            PAdd[i] = PAdd[i-1];
            if (PVals[i]<=PVals[i-1]) {
                PAdd[i]+=PVals[i-1]-PVals[i]+1;
                PVals[i] = PVals[i-1]+1;
            }
        }
        long [] SVals = new long[N];
        long [] SAdd = new long [N];
        SVals[N-1] = Arr[N-1];
        SAdd[N-1] = 0;
        for (int i=N-2;i>=0;i--) {
            SVals[i] = Arr[i]+SAdd[i+1];
            SAdd[i] = SAdd[i+1];
            if (SVals[i]<=SVals[i+1]) {
                SAdd[i] = SVals[i+1]-SVals[i]+1;
                SVals[i] = SVals[i+1]+1;
            }
        }
        long ans = Long.MAX_VALUE;
        for (int i=0;i<N;i++) {
            ans = Math.min(ans, Math.max(SAdd[i], PAdd[i]));
        }
        pw.println(ans);
        pw.close();
        br.close();
    }
}   
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...