Cod sursa(job #1555204)

Utilizator AncaSScarlat Elena Anca AncaS Data 22 decembrie 2015 14:04:41
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <cstdio>
#include <deque>

using namespace std;

FILE *fin=freopen("secventa.in","r",stdin);
FILE *fout=freopen("secventa.out","w",stdout);

int n, k, st, f, val = -30003, point;
int A[500003];
deque <int> D;
char s[4000003];



void Read_New(int pos)
{
    int aux = 0, semn;

    if( s[point] == '-' )
    {
        semn = -1;
        ++point;
    }
    else
        semn = 1;

    while( 48 <= s[point] && s[point] <= 57 )
    {
        aux = aux * 10 + s[point] - 48;
        ++point;
    }

    ++point;

    A[pos] = aux * semn;
}

int main()
{
    scanf("%d%d", &n, &k);
    getchar();
    gets(s);

    for(int i = 1 ; i <= n ; ++i )
    {
        Read_New(i);
        while( !D.empty() && A[D[D.size() - 1]] > A[i] )
            D.pop_back();
        D.push_back(i);
        while( i - D[0] >= k )
            D.pop_front();
        if(i >= k)
            if( A[D[0]] > val )
            {
                val = A[D[0]];
                f = i;
                st = i - k + 1;
            }
    }

    printf("%d %d %d", st, f, val);

    return 0;
}