Cod sursa(job #809403)

Utilizator UnforgivenMihai Catalin Botezatu Unforgiven Data 8 noiembrie 2012 11:38:44
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <fstream>
using namespace std;
#define SIZE 5000001

int deq[SIZE];
int vect[SIZE];



int main(int argc,char *argv[])
{
	
	ifstream input("secventa.in");
	ofstream output("secventa.out");
	int n;
	int k;
	int minim = -500001;
	input >> n>> k;
	for (int i=0;i<n;i++)
	{
		input >> vect[i];
	}
	int poz;
	int start = 0;
    int end = -1;
	for (int i=0;i<n;i++)
    {		
        while (end >= start && vect[i] <= vect[deq[end]])
        {
            end--;
        }
        end++;
        deq[end] = i;
		while (deq[end] - deq[start] >= k) start++;
		
		if (minim < vect[deq[start]] && i +1 >= k)
		{
			minim = vect[deq[start]];
			poz = i;
		}			

    }
	output << poz-k+2 << " " <<  poz +1 <<" " <<  minim;
	input.close();
	output.close();
	return 0;
}