Cod sursa(job #3031676)

Utilizator SSKMFSS KMF SSKMF Data 20 martie 2023 16:34:09
Problema Secventa 2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <fstream>
#include <utility>
#include <vector>
using namespace std;

ifstream cin ("secv2.in");
ofstream cout ("secv2.out");

vector < pair < int , int> > maxime;
vector <int> sir;

int main ()
{
    int lungime_sir , lungime_minima;
    cin >> lungime_sir >> lungime_minima;

    sir.resize(lungime_sir + 1) , maxime.resize(lungime_sir + 1);
    for (int indice = 1 ; indice <= lungime_sir ; indice++)
        cin >> sir[indice] , sir[indice] += sir[indice - 1];

    maxime[lungime_sir].first = sir[lungime_sir] , maxime[lungime_sir].second = lungime_sir;
    for (int indice = lungime_sir - 1 ; indice ; indice--)
        if (sir[indice] > maxime[indice + 1].first)
            maxime[indice].first = sir[indice] , maxime[indice].second = indice;
        else
            maxime[indice].first = maxime[indice + 1].first , maxime[indice].second = maxime[indice + 1].second;

    int suma_maxima = maxime[lungime_minima].first , start = 1 , stop = maxime[lungime_minima].second;
    for (int indice = lungime_minima + 1 ; indice <= lungime_sir ; indice++)
        if (maxime[indice].first - sir[indice - lungime_minima] > suma_maxima)
            suma_maxima = maxime[indice].first - sir[indice - lungime_minima] , start = indice - lungime_minima + 1 , stop = maxime[indice].second;

    cout << start << ' ' << stop << ' ' << suma_maxima;
    cout.close(); cin.close();
    return 0;
}