- js24007 的博客
1
- @ 2026-4-12 16:35:20
#include<bits/stdc++.h> using namespace std; const int N=1e8; int a[N],n,k; bool check(int d){ int cnt=1,s=1; int maxn,minn; maxn=minn=a[1]; for(int i=1;i<=n;++i){ for(int j=s;j<=i;++j){ maxn=max(maxn,a[j]); minn=min(minn,a[j]); } if(maxn-minn>d){ ++cnt; maxn=minn=a[i]; s= } if(cnt>k)return false; } return cnt<=k; } int main(){
cin>>n>>k;
for(int i=1;i<=n;++i)
cin>>a[i];
int L=0,R=1e9+1;
while(R-L>1){
int mid=(L+R)/2;
if(check(mid))
R=mid;
else L=mid;
}
cout<<R;
return 0; }