Cod sursa(job #128730)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 27 ianuarie 2008 19:10:01
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<stdio.h>
long int n,k,i,x[500001],pbaza,baza,fr[60002],j,ps,pd,vb,nm;
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]+=3000;}
	pbaza=1;baza=x[1];
	for(i=1;i<=k;i++)
	 if(x[i]<=baza)
	   {pbaza=i;baza=x[i];}
	for(i=pbaza;i<=pbaza+k-1;i++)
	 { if(x[i]<=baza)fr[baza]++;
	   else fr[x[i]]++;
	 }
	ps=1;pd=k;vb=baza;
	nm=n-k;
	for(i=pbaza;i<=nm;i++)
	{ if(x[i+k]<=baza)
	   {if(x[i]>baza){ fr[x[i]]--;fr[baza]++;}}
	  else
	   { if(x[i]>baza){ fr[x[i]]--;fr[x[i+k]]++;}
	     else {fr[baza]--;fr[x[i+k]]++;
		   if(!fr[baza])
		    { while(!fr[baza])baza++;
		      ps=i+1;pd=i+k;vb=baza;
		    }
		   }
	   }
	}
	vb-=30000;
	fprintf(g,"%ld %ld %ld\n",ps,pd,vb);
	fcloseall();
	return 0;
}