Cod sursa(job #849367)

Utilizator enedumitruene dumitru enedumitru Data 6 ianuarie 2013 20:42:07
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#define Nmax 5000010
using namespace std;
int n, k, x, i, j, sign, maxmin=-30001, u, Front=1, Back, Deque[Nmax], A[Nmax];
char s[10000005];
int main()
{   freopen("secventa.in", "r", stdin); freopen("secventa.out", "w", stdout);
    scanf("%d %d ", &n, &k);
    fgets(s,10000005,stdin); // citire parsata a elementelor sirului A
    for(i=1; i<=n; ++i)
    {   sign=1; A[i]=0;
        if(s[j]==' ') j++;
        if(s[j]=='-') {sign=-1; j++;}
        while('0'<=s[j] && s[j]<='9') {A[i]=A[i]*10+s[j]-'0'; j++;}
        A[i] *= sign;
    }
    for(i=1; i<=n; ++i)
     {  while (Front <= Back && A[i] < A[ Deque[Back] ]) Back--;
        Deque[++Back] = i;
        if (Deque[Front] <= i-k) Front++;
        if(i>=k && A[Deque[Front]]>maxmin)
            {maxmin=A[Deque[Front]]; u=i;}
    }
    printf("%d %d %d\n", u-k+1, u, maxmin);
    return 0;
}