Pagini recente » Cod sursa (job #257531) | Cod sursa (job #1040980) | Cod sursa (job #2155161) | Arhiva de probleme | Cod sursa (job #2137066)
#include <iostream>
#include <fstream>
#include <climits>
#define DMAX 50001
using namespace std;
ifstream in("secv2.in");
ofstream out("secv2.out");
int n, k;
long long sumMax, sTemp;
int nr, indDr, indSt;
int coada[DMAX], primul, ultimul;
void rezolvare(){
in >> n >> k;
sumMax = INT_MIN;
sTemp = 0;
nr = 0;
ultimul = 0;
primul = 1;
for(int i = 1; i<= n; i++){
int x;
in >> x;
sTemp += x;
coada[++ultimul] = x;
nr++;
int tempPrim = primul;
int sumTemp, nr2;
sumTemp = sTemp;
nr2 = nr;
while(tempPrim != ultimul && nr2 > k){
sumTemp -= coada[tempPrim++];
nr2--;
}
if(sumTemp > sTemp){
sTemp = sumTemp;
primul = tempPrim;
nr = nr2;
}
if(nr >= k && sTemp > sumMax){
sumMax = sTemp;
indDr = i;
indSt = i - nr + 1;
}
}
}
void afisare(){
out << indSt <<' '<<indDr << ' '<< sumMax;
}
int main() {
rezolvare();
afisare();
return 0;
}