Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Diferente pentru utilizator/ciprianf intre reviziile 9 si 2 | Cod sursa (job #3361020) | Cod sursa (job #3360999)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("secv2.in");
ofstream fout("secv2.out");
long long n, k, v[200005], suma, maxim = -1000000000000000000LL, sumaUltimelorKminus1, sfarsit, inceput, inceputCurent;
int main() {
fin >> n >> k;
for (int i = 1; i <= n; i ++) {
fin >> v[i];
}
inceputCurent = 1;
for(int i = 1; i <= n; i ++) {
suma += v[i];
sumaUltimelorKminus1 += v[i];
if (i >= k) {
sumaUltimelorKminus1 -= v[i-k+1];
if (suma > maxim) {
maxim = suma;
sfarsit = i;
inceput = inceputCurent;
}
// if(suma < 0) // resetam secventa la a avea 0 elemente
// suma = 0;
if (suma < sumaUltimelorKminus1) // resetam secventa la a avea k-1 elemente
{
suma = sumaUltimelorKminus1;
inceputCurent = i-k+2;
}
}
}
fout << inceput << ' ' << sfarsit << ' ' << maxim;
}
/*
k=3
0 1 2 3 -7 8 2
0 1 -2 3 7 8 2
*/