Cod sursa(job #1277668)

Utilizator fluture.godlikeGafton Mihnea Alexandru fluture.godlike Data 27 noiembrie 2014 23:15:44
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <stdio.h>
#define MAX -30023
#define NMAX 500023
int n, k, max = MAX, dr = 0, st = 1, p1;
short int temp;
bool f;
struct deq
{
       short int val;
       int poz;
} d[NMAX];
FILE *fin, *fout;
int main()
{
    fin = fopen("secventa.in", "r");
    fout = fopen("secventa.out", "w");
    fscanf(fin, "%d%d", &n, &k);
    for(int i = 1; i< k; i++)
    {
            fscanf(fin, "%d", &temp);
            if(!f)
            {
                  f = 1;
                  dr++;
                  d[dr].val = temp;
                  d[dr].poz = i;
                  continue;
            }
            while(dr>=st && temp <= d[dr].val) dr--;
            dr++;
            d[dr].val = temp;
            d[dr].poz = i;
    }
    for(int i =k; i<=n; i++)
    {
            while(d[st].poz <= i-k) st++;
            fscanf(fin, "%d", &temp);
            while(dr>=st && temp <= d[dr].val) dr--;
            dr++;
            d[dr].val = temp;
            d[dr].poz = i;
            if((int)d[st].val > max)
            {
                         max = (int)d[st].val;
                         p1 = d[dr].poz;
            }
    }
    fprintf(fout, "%d %d %d\n", p1-k+1, p1, max);
    fclose(fin);
    fclose(fout);
    return 0;
}