Cod sursa(job #244667)

Utilizator ConsstantinTabacu Raul Consstantin Data 15 ianuarie 2009 19:03:34
Problema Secventa Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<stdio.h>
#include<string.h>
int x[1000000],i,j,l,max=-35000,m;
unsigned long long int u,p,k,n,st,dr,s1,d1;


void update(int nod,int p,int u,int poz,int val)
{int mij=(p+u)>>1;


if(p==u)
{x[nod]=val;return ;}


if(poz<=mij)update(nod<<1,p,mij,poz,val);

else update((nod<<1)+1,mij+1,u,poz,val);


if(x[nod<<1]<x[(nod<<1)+1])
        x[nod]=x[nod<<1];
else
        x[nod]=x[(nod<<1)+1];}


int main(){
FILE *f=fopen("secventa.in","r");
fscanf(f,"%lld %lld",&n,&k);
memset(x,-35000,sizeof(x));


for(i=1;i<=k;i++)
       {fscanf(f,"%lld",&m);
       update(1,1,k,i,m);
        }
        
max=x[1];
st=1;dr=1;


for(i=k+1;i<=n;i++)
        {fscanf(f,"%lld",&m);
        l=i%k;

        if(l==0)
                update(1,1,k,k,m);
       else
                update(1,1,k,l,m);
       dr++;

       if(x[1]>max)
                {max=x[1];
                st=dr;}
         }


fclose(f);
FILE *g=fopen("secventa.out","w");
        fprintf(g,"%lld %lld %d",st,st+k-1,max);
fclose(g);
return 0;}