Cod sursa(job #2472267)

Utilizator MaraPMara P MaraP Data 12 octombrie 2019 10:44:20
Problema Secventa 2 Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream fin("secv2.in");
ofstream fout("secv2.out");

int n,k,partial_sums[50005],minimum[50005],poz_minimum[50005];

struct secv
{
    int lenght, initial_position, final_position;
}maximum;
void read()
{
    fin>>n>>k;
    int x;
    fin>>x;
    partial_sums[1]=x;
    minimum[1]=x;
    poz_minimum[1]=1;
    for(int i=2;i<=n;i++)
    {
        fin>>x;
        partial_sums[i]=x+partial_sums[i-1];
        if(minimum[i-1]<partial_sums[i])
            minimum[i]=minimum[i-1], poz_minimum[i]=poz_minimum[i-1];
        else
            minimum[i]=partial_sums[i], poz_minimum[i]=i;
    }
}
void solve()
{
    for(int i=k;i<=n;i++)
        if(partial_sums[i]-minimum[i-k+1]>maximum.lenght)
        {
            maximum.lenght=partial_sums[i]-minimum[i-k+1];
            maximum.initial_position=poz_minimum[i-k+1]+1;
            maximum.final_position=i;
        }
    fout<<maximum.initial_position<<" "<<maximum.final_position<<" "<<maximum.lenght;
}
int main()
{
    read();
    solve();
    return 0;
}