Cod sursa(job #2554911)

Utilizator marius004scarlat marius marius004 Data 23 februarie 2020 15:08:34
Problema Secventa 2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>

std::ifstream f("secv2.in");
std::ofstream g("secv2.out");

const int NMAX = 50'005;
int n,k,v[NMAX],s[NMAX],minn = (1 << 30),begin,I,J,sol = -(1 << 30);

int main(){

    f >> n >> k;

    for(int i = 1;i <= n;++i){
        f >> v[i];
        s[i] = s[i - 1] + v[i];
    }

    /// trebuie sa gasim secventa de suma maxima de lungime cel putin k
    /// incepem invers!!
    /// daca o secventa se termina in J atunci noi trebuie sa gasim un index I astfel incat I <= J - K , I >= 1 si este minim
    /// luam maximul diferentei dintre S[J] si S[I]

    for(int i = k;i <= n;++i){

        if(s[i - k] < minn){
            minn = s[i - k];
            begin = i - k + 1;
        }

        if(s[i] - minn > sol){
            sol = s[i] - minn;
            I = begin;
            J = i;
        }
    }

    g << I << ' ' << J << ' ' << sol;

    return 0;
}