Cod sursa(job #1205032)

Utilizator rogoz.bogdanRogoz Bogdan rogoz.bogdan Data 4 iulie 2014 19:18:19
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>
#include <iostream>
#include <deque>
#define MX 500001
//#define maxim(a,b) ((a>b) ? a : b)
using namespace std;

ifstream fin("secventa.in");
ofstream fout("secventa.out");
int n,k;

struct poz
{
    int i,j,d;
};
deque<poz> v;
poz m = {0, 0, 0};

void afisare()
{
    deque<poz>::iterator it;

    for(it=v.begin(); it!=v.end(); it++)
    {
        cout<<it->d<<' ';
    }
    cout<<'\n';
}

int main()
{
    int i,a;
    poz e,u;
    fin>>n>>k;

    for(i=1; i<=n; i++)
    {
        fin>>a;

        while(!v.empty() && v.back().d > a)
        {
            v.pop_back();
        }

        if(i-k < 0) //nu am citit primele k numere
        {
            e.i = 1;
            e.j = k;
            e.d = a;
        }
        else
        {
            e.i = i-k+1;
            e.j = i;
            e.d = a;
        }

        v.push_back(e);

        //afisare();

        if(i == v.front().i+k)
        {
            u = v.front();
            //cout<<u.d<<' ';
            v.pop_front();
            if(u.d > m.d) m=u;
        }
    }

    fout<<m.i<<' '<<m.j<<' '<<m.d;

    fin.close(); fout.close();
    return 0;
}