rt,WA了第四个点……
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int l,k;
int rec[100005];
ll minn=LLONG_MAX,maxn=-1;
ll calc(ll n)
{
ll sum=0,res=0;
for (int i=1;i<=l;i++)
{
sum=max(0ll,sum+rec[i]);
if (sum>=n)
{
res++;
sum=0;
}
}
return res;
}
void work(ll l,ll r,int sign)
{
if (l>r)
return;
// sign=-1 both
// sign=0 left
// sign=1 right
ll mid=(l+r)>>1;
ll q=calc(mid);
if (q<k)
work(l,mid-1,sign);
if (q>k)
work(mid+1,r,sign);
if (q==k)
{
minn=min(minn,mid);
maxn=max(maxn,mid);
if (sign==1)
work(mid+1,r,sign);
if (sign==0)
work(l,mid-1,sign);
if (sign==-1)
{
work(l,mid-1,0);
work(mid+1,r,1);
}
}
return;
}
int main()
{
// freopen("IceAge.in","r",stdin);
// freopen("IceAge.out","w",stdout);
scanf("%d%d",&l,&k);
for (int i=1;i<=l;i++)
scanf("%d",&rec[i]);
work(1,LLONG_MAX,-1);
if (maxn==-1)
puts("-1");
else
printf("%lld %lld\n",minn,maxn);
return 0;
}