Cod sursa(job #171321)

Utilizator firewizardLucian Dobre firewizard Data 4 aprilie 2008 00:18:54
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct blabla{int x;int y;};
blabla deque[1000000];
long max,s,n,k,p,capat,coada,a[1000000],i,j,P,nr;
char cit[350005],*se;
void in(long v,long p)
{
   while(capat<=coada&&v<deque[coada].x)coada--;
   coada++;deque[coada].x=v;deque[coada].y=p;
}
int query()
{
     while(capat<=coada&&deque[capat].y<P)capat++;
     return deque[capat].x;
}
int main()
{
    freopen("secventa.in","r",stdin);
    freopen("secventa.out","w",stdout);
    scanf("%ld %ld\n",&n,&k);
    i=0;j=1;
    gets(cit);     
    se=cit;     
    for(i=1;i<n;i++)     
    {    
        a[i]=atol(se);     
        se=strchr(se,' ');     
        se++;     
    }     
    a[n]=atol(se);    
    capat=1;max=-150000000;
    for(i=1;i<k;i++){in(a[i],i);}
    for(i=k,P=1;i<=n;i++,P++)
    {
       in(a[i],i);
       if(query()>max){max=query();s=i;}
    }
    printf("%ld %ld %ld ",s-k+1,s,max);
    for(i=1;i<=n;i++)
    printf("%ld ",a[i]);
    return 0;
}