Cod sursa(job #1525800)

Utilizator codi22FMI Condrea Florin codi22 Data 15 noiembrie 2015 16:39:38
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include<stdio.h>
#include<deque>

FILE *in,*out;
int d[500001], v[500001], st_d=1, f_d=1,st_v=1,f_v=1;
char c[3000101];
int N, K;

int main()
{
    in = fopen("secventa.in", "r");
    out = fopen("secventa.out", "w");

    fscanf(in,"%d%d", &N, &K);
    fgetc(in);
    fgets(c, 3000101, in);
    int e,l,min=1<<31,left=0,right=0,c_s=0,sgn;
    for (int i = 1;i <= N;++i)
    {
        e = 0;
        sgn = 1;
        if (c[c_s] == '-')
            sgn = -1, ++c_s;
        while (c[c_s] >= '0' && c[c_s] <= '9')
        {
            e = e * 10 + c[c_s] - '0';
            ++c_s;
        }
        ++c_s;
        e = e*sgn;
        while (st_d!=f_d && e <d[f_d-1])
        {
            --f_d;
            --f_v;
        }
        d[f_d++] = e;
        v[f_v++] = i;
        if (i >= K)
        {
            if (d[st_d] > min)
            {
                min=d[st_d];
                left = i-K+1;
                right =i ;
            }
            if (v[st_v] == i-K+1)
            {
                ++st_d;
                ++st_v;
            }
        }
    }
    fprintf(out,"%d %d %d",left,right,min);
    return 0;
}