Cod sursa(job #142876)

Utilizator znakeuJurba Andrei znakeu Data 25 februarie 2008 15:19:43
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <stdio.h>
#include <string.h>
#define ASDF 500005
// Note to who ever looks over the source:
// Dont just do 'random' adjustments to some program that you wrote months ago thinking that it will work like i did earlyer
// Hopefully this thing will work now or else my desk will get some serious punishment!! hmm or maybe not...
// it is a new desk so maybe ill unleash my destructive fury on some other old crap i see around here.. like... YOU!....

struct wtf
{
	int s,p;
};
int v[ASDF];
char s[ASDF*7];

int main()
{
	wtf m,c;
	int n=0,ls=0,k=0,semn=0,i,j;

	FILE *in=fopen("secventa.in","r");
	fscanf(in,"%d%d",&n,&k);
	fgets(s,ASDF*7-1,in);
	fgets(s,ASDF*7-1,in);
	ls=strlen(s);

	semn=1; v[0]=0;
	for (i=0,j=0; i<ls; i++)
	{
		if (s[i]=='-')
			semn=-1;
		else
			if (s[i]>='0' && s[i]<='9')
				v[j]=v[j]*10+s[i]-'0';
			else
			{
				v[j]*=semn;
				j++; v[j]=0; semn=1;
			}
	}

	m.s=0; m.p=0;
	for (i=1; i<k; i++)
		if (v[m.p]>v[i])
			m.p=i;

	for (i=1; i<=n-k; i++)
	{
		c.p=i; c.s=i;
		for (j=i+1; j<i+k; j++)
			if (v[c.p]>v[j])
				c.p=j;
		i=c.p;
		if (v[c.p]>v[m.p])
		{
			m.p=c.p;
			m.s=c.s;
		}
	}

	FILE *out=fopen("secventa.out","w");
	fprintf(out,"%d %d %d\n",m.s+1,m.s+k,v[m.p]);

	fclose(in);
	fclose(out);
	return 0;
}