Cod sursa(job #1844574)

Utilizator bt.panteaPantea Beniamin bt.pantea Data 10 ianuarie 2017 03:08:02
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <iostream>
#include <fstream>
#include <deque>
#include <cstring>
#define NMAX 500010
#define INF 1000000000
#define LS 5000000
using namespace std;
ifstream f ("secventa.in");
ofstream g ("secventa.out");
int v[NMAX], n, k, Max = -INF, pos;
char s[LS];
deque<int> d;

int cit(int &p)
{
    int x=0,semn=1;
    if(s[p]=='-'){semn=-1;p++;}

    while(s[p]>='0' && s[p]<='9')
    {
        x=x*10+(s[p]-'0');
        p++;
    }
    p++;
    return semn*x;

}

int main()
{
    f>>n>>k;
    int j = 0;
    f.get();
    f.getline(s, LS);
    for (int i = 1; i < k; i++)
    {
        v[i] = cit(j);
        while (!d.empty() && v[d.back()] >= v[i]) d.pop_back();
        d.push_back(i);
    }
    for (int i = k; i <= n; i++)
    {
        v[i] = cit(j);
        if (!d.empty() && d.front() == i - k) d.pop_front();
        while (!d.empty() && v[d.back()] >= v[i]) d.pop_back();
        d.push_back(i);
        if (Max < v[d.front()])
            Max = v[d.front()], pos = i;
    }
    g<<pos - k + 1<<' '<<pos<<' '<<Max;
    return 0;
}