Cod sursa(job #130993)

Utilizator razvan2006razvan brezulianu razvan2006 Data 2 februarie 2008 20:10:37
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>   
#include<string.h>   
#include<stdlib.h>   
long int n,k,i,x[500002],u,p,c[500002],ps,b;   
char cit[3500014],*s;   
int main()   
{   
    FILE *f,*g;f=fopen("secventa.in","r");g=fopen("secventa.out","w");   
    fscanf(f,"%ld %ld\n",&n,&k);   
    fgets(cit,3500014,f);   
    s=cit;   
    for(i=1;i<n;i++)   
    { x[i]=atol(s);   
      s=strchr(s,' ');   
      s++;   
    }   
    x[n]=atol(s);   
    for(i=1;i<=k;i++)   
    { while(u>=p&&c[u]>x[i])u--;   
      u++;c[u]=x[i];   
    }   
    b=c[p];ps=1;   
    for(i=k+1;i<=n;i++)   
    { if(c[p]==x[i-k])p++;   
      while(u>=p&&c[u]>x[i])u--;   
      u++;c[u]=x[i];   
      if(b<c[p]){b=c[p];ps=i-k+1;}   
    }   
    fprintf(g,"%ld %ld %ld\n",ps,ps+k-1,b);   
    fcloseall();   
    return 0;   
}