Untitled
unknown
c_cpp
10 months ago
687 B
7
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