Cod sursa(job #2488961)

Utilizator andrei42Oandrei42O andrei42O Data 7 noiembrie 2019 20:26:14
Problema Secventa Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
const int N = 500010;
int n, k, v[N], x[N], M[N], st, mini, maxS;
int minim(int st, int dr, int y[])
{
    if(st == dr)
        return y[st];
    return min(y[dr], minim(st, dr - 1, y));
}
int main()
{
    f >> n >> k;
    for(int i = 1; i <= k; i++){
        f >> v[i];
        x[1] += v[i];
    }
    M[1] = minim(1, k, v);
    for(int i = k + 1; i <= n; i++)
    {
        f >> v[i];
        x[i - k + 1] = x[i - k] + v[i] - v[i - k];
        M[i - k + 1] = minim(i - k + 1, i, v);
        if(mini < M[i - k + 1])
        {
            mini = M[i - k + 1];
            maxS = x[i - k + 1];
            st = i - k + 1;
        }
        else if(mini == M[i - k + 1] && x[i - k + 1] > maxS)
            st = i - k + 1;
    }
    g << st << ' ' << st + k - 1 << ' ' << mini;

    return 0;
}