Cod sursa(job #2137066)

Utilizator ruxandramateiMatei Ruxandra ruxandramatei Data 20 februarie 2018 16:14:42
Problema Secventa 2 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#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;
}