Cod sursa(job #127484)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 24 ianuarie 2008 03:14:40
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<stdio.h>
long int n,k,i,x[500001],pbaza,baza,fr[60002],j,ps,pf,vb,p1,p2;
int main()
{
	FILE *f,*g;f=fopen("secventa.in","r");g=fopen("secventa.out","w");
	fscanf(f,"%ld%ld",&n,&k);
	for(i=1;i<=n;i++){ fscanf(f,"%ld",&x[i]);x[i]+=30000;}
	pbaza=1;baza=x[1];fr[x[1]]++;
	for(i=2;i<=k;i++)
	{ if(x[i]>baza)fr[x[i]]++;
	  else
	  { for(j=pbaza;j<i;j++)fr[x[j]]--;
	    pbaza=i;baza=x[i];fr[x[i]]++;
	  }
	}
	ps=1;pf=k;vb=baza;
	p1=pbaza;p2=p1+k-1;
	for(i=k+1;i<=p2;i++)
	{  if(x[i]<baza)x[i]=baza;
	   fr[x[i]]++;
	}
	while(p2<n)
	{ p2++;if(x[p2]<baza)x[p2]=baza;
	  fr[x[p2]]++;
	  fr[x[p1]]--;
	  p1++;
	  if(!fr[baza])
	  { while(!fr[baza])baza++;ps=p1;pf=p2;vb=baza;}
	}
	vb-=30000;
	fprintf(g,"%ld %ld %ld\n",ps,pf,vb);
	fcloseall();
	return 0;
}