#14 Wa ,提示有解,我的程序无解
#include <bits/stdc++.h>
using namespace std;
#define LL long long
int l , k;
LL line , x[100005] , mi , ma;
LL nl , ml;
bool f;
inline LL q_read()
{
LL f = 1 , x = 0;
char c = getchar();
while (c < '0' || c > '9')
{
if (c == '-')
f = -1*f;
c = getchar();
}
while (c >= '0' && c <= '9')
{
x = (x<<3) + (x<<1) + (c^48);
c = getchar();
}
return x*f;
}
int se(LL mid)
{
LL ans = 0 , now = 0;
for (int i = 0 ; i < l ; ++i)
{
now += x[i];
if (now < 0)
now = 0;
else if (now >= mid)
{
now = 0;
ans++;
}
}
if (ans == k)
return 0;
else if (ans > k)
return 1;
return 2;
}
void devi(LL le , LL ri)
{
LL mid = (le+ri) >> 1;
if (mid < ma && mid > mi)
return;
int flag = se(mid);
if (flag == 0)
{
f = 1;
mi = min(mi , mid);
ma = max(ma , mid);
if (le >= ri)
return;
devi(le , mid);
devi(mid+1 , ri);
return;
}
if (le >= ri)
return;
if (flag == 1)
devi(mid+1 , ri);
else if (flag == 2)
devi(le , mid-1);
}
int main()
{
f = 0;
cin >> l >> k;
for (int i = 0 ; i < l ; ++i)
{
scanf("%lld" , &x[i]);
if (x[i] >= 0)
{
nl += x[i];
ml = max(ml , nl);
}
else
nl = 0;
}
mi = ml+10;
ma = 1;
LL mid = (ml) >> 1;
devi(1 , ml);
if (f)
printf("%lld %lld" , mi , ma);
else
printf("-1");
return 0;
}