这里
想用二分,但出错
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,k,l,r,mid;
ll a[100010];
bool check(ll x){
ll ans=1,sum=0;
for(ll i=1;i<=n;i++){
if(sum+a[i]*a[i]>x){
sum=0,ans++;
}
sum+=a[i]*a[i];
}
return ans+1<=k;
}
int main(){
cin>>n>>k;
for(ll i=1;i<=n;i++) cin>>a[i],r=max(r,a[i]);
l=0,r=n*r;
while(l<r){
mid=(l+r)>>1;
if(check(mid)){
r=mid;
}else l=mid+1;
}
cout<<l;
return 0;
}