Pagini recente » Cod sursa (job #2919956) | Cod sursa (job #2453931) | Cod sursa (job #2143289) | Cod sursa (job #2815056) | Cod sursa (job #2306540)
#include <fstream>
#include <climits>
#include <deque>
#include <cstring>
#define maxn 50000
using namespace std;
ifstream fin("secv2.in");
ofstream fout("secv2.out");
long long n, k, v[maxn+2], maxim=LLONG_MIN, posi, posj, pos;
string s;
deque<long long>dq;
int main()
{
fin>>n>>k;
fin.get();
getline(fin,s);
for(int i=0; i<s.size(); i++)
{
int t=0;
if(s[i]=='-')
{
i++;
while(s[i]>='0'&&s[i]<='9')
{
t=t*10+('0'-s[i]);
i++;
}
v[++pos]=t;
}
else if('0'<=s[i]&&s[i]<='9')
{
while('0'<=s[i]&&s[i]<='9')
{
t=t*10+(s[i]-'0');
i++;
}
v[++pos]=t;
}
}
for(int i=1; i<k; i++)
{
v[i]+=v[i-1];
}
for(int i=k; i<=n; i++)
{
v[i]+=v[i-1];
while(!dq.empty()&&v[i-k]<v[dq.back()])
dq.pop_back();
dq.push_back(i-k);
if(v[i]-v[dq.front()]>maxim)
{
maxim=v[i]-v[dq.front()];
posi=i;
posj=dq.front()+1;
}
}
fout<<posj<<' '<<posi<<' '<<maxim<<'\n';
return 0;
}