Cod sursa(job #355750)

Utilizator iulia609fara nume iulia609 Data 12 octombrie 2009 01:12:31
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>
#define dim 500001
using namespace std;

int N,K,i,minim,in,sf,capat, d[dim], A[dim];

int main()
{ 

	//FILE *f = fopen("secventa.in", "r");
	//FILE *g = fopen("secventa.out", "w");
	ifstream f("secventa.in");
	ofstream g("secventa.out");
	
	//fscanf(f, "%d%d", &N, &K);
	f>>N>>K;
	
	in = sf = 1;
	minim = capat = -30001;
	for(i = 1; i <= N; i++)
		{
			f>>A[i];//fscanf(f, "%d", &A[i]);
			while(in <= sf && A[d[sf]] >= A[i]) sf--;
			d[++sf] = i;
			if (i - d[in] == K) in++; 
			
			if (A[d[in]] > minim && i >= K) 
				//if(i >= K)
					minim = A[d[in]], capat = i;
		}
	
	g<<capat-K+1<<" "<<capat<<" "<<minim<<'\n';
	//fprintf(g, "%d %d %d\n", capat-K+1, capat, min);
	
	f.close();
	g.close();
	return 0;
}