Cod sursa(job #1505057)

Utilizator Julian.FMI Caluian Iulian Julian. Data 18 octombrie 2015 18:17:59
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <stdio.h>
#include <fstream>
#define nmax 500005
using namespace std;
FILE* fin=fopen("secventa.in","r");
ofstream fout("secventa.out");

int dq[nmax],poz[nmax];
char s[nmax];

int main()
{long in,sf,i,x,maxim,inc,n,k,j,ok;
    fscanf(fin,"%ld%ld\n",&n,&k);
    fgets(s,nmax,fin);



maxim=-30999;inc=0;sf=-1;in=0;
i=0;ok=1;x=0;

    for(j=0;s[j];j++)
       if(s[j]==' ')
        {i++;
        x=x*ok;
         while(sf>=in && x<dq[sf])sf--;
         dq[++sf]=x;
         poz[sf] =i;


        if(i>=k)
            if(dq[in]>maxim)
                {maxim=dq[in];
                  inc=poz[sf]-k+1;}

        if(i-poz[in] >= k-1)in++;

        x=0;ok=1;
        }
        else if(s[j]=='-')ok=-1;
                else x=x*10+s[j]-'0';


        i++;
        x=x*ok;
         while(sf>=in && x<dq[sf])sf--;
         dq[++sf]=x;
         poz[sf] =i;
         if(dq[in]>maxim)
                {maxim=dq[in];
                  inc=poz[sf]-k+1;}



    cout<<inc<<' '<<inc+k-1<<' '<<maxim;

}