Pagini recente » Cod sursa (job #689113) | Cod sursa (job #194578) | Cod sursa (job #47474) | Cod sursa (job #123759) | Cod sursa (job #2631362)
#include <fstream>
using namespace std;
ifstream cin("secv2.in");
ofstream cout("secv2.out");
typedef long long ll;
const ll lim=50005;
ll v[lim],p[lim];
pair<ll,ll> st[lim],dr[lim];
int main()
{
ll n,k;
cin>>n>>k;
for(ll i=1;i<=n;++i)
{
cin>>v[i];
p[i]=p[i-1]+v[i];
}
for(ll i=1;i<=n;++i)
{
if(st[i-1].first<0) st[i]={v[i],i};
else st[i]={st[i-1].first+v[i],st[i-1].second};
}
for(ll i=n;i>=1;--i)
{
if(dr[i+1].first<0) dr[i]={v[i],i};
else dr[i]={dr[i+1].first+v[i],dr[i+1].second};
}
ll ans=-2e9,l=-1,r=-1;
for(ll i=1;i+k<=n+1;++i)
{
ll base=p[i+k-1]-p[i-1]+max(0LL,st[i-1].first)+max(0LL,dr[i+k].first);
if(base>ans)
{
ans=base;
if(st[i-1].first<=0) l=i;
else l=st[i-1].second;
if(dr[i+k].first<=0) r=i+k-1;
else r=dr[i+k].second;
}
}
cout<<l<<' '<<r<<' '<<ans<<'\n';
return 0;
}