Cod sursa(job #1796618)

Utilizator ionutpop118Pop Ioan Cristian ionutpop118 Data 3 noiembrie 2016 17:16:39
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>
using namespace std;

int dq[500005];
int v[500005];
int main()
{
    freopen("secventa.in", "r", stdin);
    freopen("secventa.out", "w", stdout);

    int n, k, dr, dqst, dqdr;
    int ans = -30002;
    dqst = 0; dqdr = 1;
    scanf("%d %d", &n, &k);
    for (int i = 1; i <= n; ++i)
    {
        scanf("%d", &v[i]);
        if (dqst + 1 != dqdr && dqst + k <= i)
            ++dqst;
        while (dqst + 1 != dqdr && v[i] < v[dq[dqdr]])
            --dqdr;
        dq[++dqdr] = i;
        if (i >= k && v[dq[dqst]] > ans)
        {
            ans = v[dq[dqst]];
            dr = i;
        }
    }
    printf("%d %d %d\n", dr - k + 1, dr, ans);
    return 0;
}