Cod sursa(job #382673)

Utilizator shnakoVlad Schnakovszki shnako Data 14 ianuarie 2010 12:57:28
Problema Secventa 2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <stdio.h>
FILE *f=fopen("secv2.in", "r"), *g=fopen("secv2.out", "w");
long v[50005], s[50005], k, n, i, j, h, pozmax, lmax, sw, t, l, max;


void citeste(void)
{
	fscanf(f, "%ld%ld", &n, &k);
	for (i=1;i<=n;i++)
		fscanf(f, "%ld", &v[i]);
	fclose(f);
}

void rezolva(void)
{
	s[1]=v[1];
	for (i=2;i<=n;i++)
		if (s[i-1]<0)
			s[i]=v[i];
		else
			s[i]=s[i-1]+v[i];
}

void tip(void)
{
	fprintf(g, "%ld %ld %ld", pozmax-lmax+1, pozmax, lmax);
	fclose(g);
}

void gaseste(void)
{
	for (i=n;i>=1;i++)
	{
		max=-589647;
		for (j=1;j<=n;i++)
			if (s[j]>max)
			{
				sw=0;
				max=s[j];
				pozmax=j;
			}
			else
				if (s[j]==max)
					sw=1;
		t=max;
		for (j=pozmax;t;j--)
		{
			t-=v[j];
			l++;
		}
		lmax=l;
		if (l>=k)
			if (sw)
			{
				s[pozmax]=-589647;
				for (j=1;j<=n;j++)
					if (s[j]==max)
					{
						l=0;
						t=max;
						for (h=j;t;h--)
						{
							t-=v[h];
							l++;
						}
						if (l>lmax)
						{
							lmax=l;
							pozmax=j;
						}
					}
			}
	}
}

int main(void)
{
	citeste();
	rezolva();
	gaseste();
	tip();
	return 0;
}