Untitled
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