Cod sursa(job #820371)

Utilizator razvan9310FMI - Razvan Damachi razvan9310 Data 20 noiembrie 2012 19:34:19
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <iostream>
using namespace std;

struct nr
{
	int val, poz;
}c[5000001];

char text[2000000];

int main()
{
	ifstream in("secventa.in"); ofstream out("secventa.out");
	int n, k, i=1, x, inc=1, sf=1, start, stop, j=0;
	int maxim = -30001;
	
	/*string text;*/ in>>n>>k;
	in>>x; //getline(in, text);
	in.get(text, 2000000); //cout<<text;//stringstream ss(text);
	c[1].val = x; c[1].poz = 1;
	
	while (i < n)
	{
		//ss>>x;
		int minusunu = 1; x = 0;
		while ((text[j] < '0' || text[j] > '9') && text[j] != '-')
			j++;
		if (text[j] == '-')
		{
			minusunu = -1;
			j++;
		}
		while (text[j] >= '0' && text[j] <= '9')
			x = x*10 + text[j++]-'0';
		x *= minusunu; i++; //cout<<x<<" ";
		
		while (x <= c[sf].val && sf >= inc) sf--;
		c[++sf].val = x; c[sf].poz = i;
		if (c[inc].poz + k <= i) inc++;
		if (i >= k)
			if (c[inc].val > maxim) 
			{
				maxim = c[inc].val;
				//start = i-k+1;
				stop = i;
			}
	}
	
	out<<stop-k+1<<" "<<stop<<" "<<maxim;
	return 0;
}