Cod sursa(job #1160301)

Utilizator hopingsteamMatraguna Mihai-Alexandru hopingsteam Data 30 martie 2014 13:59:39
Problema Secventa Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include    <iostream>
#include    <fstream>
#include    <deque>

using namespace std;

ifstream fin("secventa.in");
ofstream fout("secventa.out");

struct ceva
{
    int val, pos;
}nr;

deque < ceva > deq;

int n, k, x, i;
int tNr, sign;
int maxim = -30001, mBegin, mEnd;

string line;

void read()
{
    fin >> n >> k;
    fin.get();
    getline(fin, line);
    for(int x = 0; x < line.size(); x++)
    {
        i += 1;
        tNr = 0; sign = 1;
        if(line[x] == '-')
        {
            sign = -1;
            x += 1;
        }
        while(line[x] != ' ')
        {
            tNr = tNr * 10 + line[x] - '0';
            x += 1;
        }

        tNr *= sign;

        cout << tNr << " ";
        while(!deq.empty() && deq.back().val > tNr)
            deq.pop_back();

        if(!deq.empty() && i - deq.front().pos + 1 > k)
            deq.pop_front();

        nr.val = tNr;
        nr.pos = i;
        deq.push_back(nr);

        if(deq.front().val > maxim && i >= k)
        {
            maxim = deq.front().val;
            mBegin = i - k + 1;
            mEnd = i;
        }
    }
}

int main()
{
    read();
    fout << mBegin << " " << mEnd << " " << maxim;
    return 0;
}