Cod sursa(job #110483)

Utilizator c_iulyanCretu Iulian c_iulyan Data 26 noiembrie 2007 20:30:18
Problema Secventa Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<stdio.h>
FILE *f=fopen("secventa.in","r"),*g=fopen("secventa.out","w");
long n,k,d[500000],r1,l1;
int x,max=-31000,v[500000];

void go()
{
long l=0,r=0;
long i;
for(i=2;i<k;i++)
{fscanf(f,"%d",&x);
   v[i]=x;
   while(r>=0&&v[d[r]]>x)
      r--;
   d[++r]=i;
   if(l>r) l=r;
   while(d[l]<=d[r]-k)
      l++;
}
for(long i=k;i<=n;i++)
   {fscanf(f,"%d",&x);
   v[i]=x;
   while(r>=0&&v[d[r]]>x)
      r--;
   d[++r]=i;
   if(l>r) l=r;
   while(d[l]<=d[r]-k)
      l++;
   if(max<v[d[l]])
      {max=v[d[l]];
      r1=d[l];
      }
   }

}

void ct1()
{
fscanf(f,"%ld%ld%d",&n,&k,&x);
}


int main()
{
ct1();
d[0]=1;
v[1]=x;
go();
l1=r1;
while(v[r1]<=v[l1]) l1--;
fprintf(g,"%ld %ld %d",l1+1,l1+k,max);
return 0;
}