Cod sursa(job #2136978)

Utilizator ruxandramateiMatei Ruxandra ruxandramatei Data 20 februarie 2018 14:59:08
Problema Secventa 2 Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 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++;
        while(nr > k && sTemp - coada[primul] >= sTemp){
            sTemp -= coada[primul];
            primul ++;
            nr--;
        }
        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;
}