Cod sursa(job #58944)

Utilizator peanutzAndrei Homorodean peanutz Data 7 mai 2007 19:33:51
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <stdio.h>

#define NMAX 500010
#define SORTMAX 100000
#define after 40303

long n, k;
int a[NMAX];
int sort[SORTMAX];
int max, begin, end;

#define sort (sort + after)

void read()
{
	int i;

	scanf("%ld %ld", &n, &k);

	//for(i = 1; i <= n; ++i)
	  //	scanf("%d ", &a[i]);
}

void solve()
{
	int i;
	int inc, sf, ok;
	int min = 32000;
	int h = 1;

	for(inc = sf = 1; sf <= k; ++sf)
	{
		scanf("%d ", &a[h++]);

		++sort[ a[sf] ];

		if(min > a[sf])
		{
			min = a[sf];
		}
	}
	max = min;
	begin = 1;
	end = --sf;

	scanf("%d ", &a[h++]);

	while(sf+1 <= n)
	{
		scanf("%d ", &a[h++]);

		++sort[ a[++sf] ];

		if(min > a[sf])
			min = a[sf];

		--sort[ a[inc] ];

		if((a[inc] == min) && !sort[ a[inc] ])
		{
			ok = 1;
			for(i = a[inc]; ok; ++i)
			{
				if(sort[ i ])
				{
					min = i;
					ok = 0;
				}
			}
		}
		++inc;

		if(min > max)
		{
			max = min;
			begin = inc;
			end = sf;
		}

	}
}

int main()
{
	freopen("secventa.in", "r", stdin);
	freopen("secventa.out", "w", stdout);

	read();

	solve();

	printf("%d %d %d\n", begin, end, max);

	fclose(stdin);
	fclose(stdout);

	return 0;
}