Cod sursa(job #1663)

Utilizator pocaituDavid si Goliat pocaitu Data 14 decembrie 2006 12:22:10
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include<stdio.h>
#include<fstream.h>
int long v[500010],st[500000],sf,inc,max,pp,poz[500000],n,k,max1,min,p1,j;
void insereaza_stiva(int x,int p)
{int long i;
for(i=inc;st[i]>=x&&i<=sf;i++);
inc=i-1;
st[i-1]=x;
poz[i-1]=p;
}

int main()
{freopen("secventa.in","r",stdin);
 scanf("%ld%ld",&n,&k);
  int long i;
 // int v[99];
  for(i=1;i<=n;i++)
	scanf("%ld",&v[i]);
 //st[1]=v[1];poz[1]=1;inc=sf=1;
 poz[400000]=1,inc=sf=400000;st[inc]=v[1];
/* for(i=1;i<=k;i++)
   insereaza_stiva(v[i],i);
 while(poz[inc]<=n)
 {//if(poz[inc]>n)
   //	break;

 if(st[sf]>max)
   {//pp- pozitia de inceput
	pp=poz[inc]-k+1;
	max=st[sf];
	}
	sf--;
	 if(k+poz[sf+1]>n)
	break;
  for(i=poz[inc]+1;i<=n&&i<=poz[sf+1]+k;i++)
	insereaza_stiva(v[i],i);

  }*/
 for(i=1;i<=n;i++)
  {for(j=i+1,min=v[i];j<=n&&j<=i+k-1;j++)
   if(v[j]<min)
	min=v[j];
   if(min>max1&&i+k-1<=n)
	 {max1=min;
	  p1=i;
	  }
	}
  ofstream g("secventa.out");
  g<<p1<<" "<<p1+k-1<<" "<<max1;
// freopen("secventa.out","w",stdout);
 // printf("%ld ",pp);
 //  printf("%ld ",pp+k-1);
//  printf("%ld ",max);
//  for(i=pp;i<=pp+k-1;i++)
 //	printf("%ld ",v[i]);
  g.close();
// fclose(stdout);
 return 0;
 }