Cod sursa(job #1526238)

Utilizator tain1234andrei laur tain1234 Data 16 noiembrie 2015 03:12:07
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <string>
int v[500000], len, s, front, x;
int pos[500000];
int N=0, k=0;
using namespace std;
int main(){
	ofstream of("secventa.out");
	ifstream f("secvqnta.in");
	int max = -300000, p1 = 0, p2 = 0;
	string s;
	getline(f, s);
	int j = 0;
	while (s[j] != ' '){
		N = N * 10 + s[j] - '0';
		++j;
	}
	++j;
	while (j<s.size()){
		k = k * 10 + s[j] - '0';
		++j;
	}
	bool semn;
	front = 1; len = 0;
	getline(f, s);
	s += ' ';
	j = 0;
	for (long i = 1; i <= N; ++i){
		semn = 0;
		while (s[j] != ' '){
			if (s[j] == '-')semn = 1;
			else
			v[i] = v[i] * 10 + s[j] - '0';
			++j;
		}
		if (semn)v[i] *= -1;
		++j;
		while (len >= front && v[i] <= v[pos[len]]) --len;
		pos[++len] = i;
		if (pos[front] <= i - k)
			++front;
		if (i >= k && v[pos[front]] > max){
			max = v[pos[front]];  p2 = i;
		}
	}
	of <<p2-k+1<<" "<<p2 << " "<<max<<"\n";
}