Cod sursa(job #512112)

Utilizator valentin.harsanValentin Harsan valentin.harsan Data 13 decembrie 2010 17:34:55
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<iostream>
#include<fstream>
using namespace std;

const int N=5000001;
int n,k,v[N],d[N],st,dr=-1,i,smax,x1,x2;
long long s;
ifstream aa("secventa.in");
ofstream ss("secventa.out");
inline void stanga(int i)
{
	if (i-d[st]==k) {
		++st;
	}
}

inline void dreapta(int i){
	while (st<=dr && v[d[dr]]>=v[i]) {
		--dr;
	}
} 
inline void adauga(int i) {
	d[++dr]=i;
}

int main () {
	aa >> n >> k;
	for (i=1;i<=n;++i) {
		aa >> v[i];
	}
	for (i=1;i<=k;++i) {
		dreapta(i);
		adauga(i);
	}
	s+=v[d[st]];
	for(;i<=n;++i) {
		stanga(i);
		dreapta(i);
		adauga(i);
		if (v[d[st]]>smax) {
			smax=v[d[st]];
			x1=i;
			x2=i-2;
		}
	}
	for (i=x2;i<=x1;++i)
	ss << v[i] << " ";
	return 0;
}