Cod sursa(job #92607)

Utilizator piroslPiros Lucian pirosl Data 16 octombrie 2007 01:45:36
Problema Secventa Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <stdio.h>
#include <stdlib.h>

int num[500001];

int main(void)
{
	FILE* fin;
	FILE* fout;

	fin = fopen("secventa.in", "r");
	fout = fopen("secventa.out", "w");

	int n, k;
	fscanf(fin, "%d %d\n", &n, &k);
	for(int i=0;i<n;++i)
	{
		int v;
		fscanf(fin, "%d", &v);
		num[i] = v;
	}

	int pMin = 0;
	int s = 0;
	int e = k-1;
	int min = 30001;

	for(int i=0;i<k;++i) {
		if(min > num[i]) 
		{
			min = num[i];
			pMin = i;
		}
	}
	
	for(int i=k;i<n;++i)
	{
		if(num[i] > num[pMin])
		{
			if(i-pMin+1>=k)
			{
				int pMin1 = 0;
				int min1 = 30001;
				for(int j=i;j>i-k; --j) 
				{
					if(min1 > num[j])
					{
						min1 = num[j];
						pMin1 = j;
					}
				}

				if(min1 > min) 
				{
					s = i-k+1;
					e = i;
					min = min1;
				}
			}
		}
	}
	
	fprintf(fout, "%d %d %d\n", s+1, e+1, min);
	fclose(fin);
	fclose(fout);
	return 0;
}