Untitled

 avatar
unknown
c_cpp
2 months ago
687 B
5
Indexable
int dp[2003];
bool chk(int val, vector<int> &arr, int k){
    for(int i=0;i<n;i++) dp[i]=100000;
    dp[0]=0;
    for(int i=1;i<n;i++){
        dp[i]=i;
        for(int j=0;j<i;j++){
            if((abs(a[i]-a[j])+(i-j)-1)/(i-j)<=val)
            dp[i]=min(dp[i],dp[j]+i-j-1);
        }
    }
    int mn=100000;
    for(int i=0;i<n;i++){
        mn=min(mn,dp[i]+n-i-1);
    }
    return (mn<=k);
}
int minimizeHardness(vector<int>& arr, int n, int k) {
    if (n <= 1) return 0;
    unsigned int l=-1,r=2000000001;
    
    while(r-l>1){
        int mid = (r+l)/2
        if(chk(mid,arr,k){
            r=(r+l)/2;
        } else {
            l=(r+l)/2;
        }
    }
    return r;
}

Editor is loading...
Leave a Comment