Cod sursa(job #2399910)

Utilizator IoanaDraganescuIoana Draganescu IoanaDraganescu Data 8 aprilie 2019 10:24:29
Problema Secventa Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <deque>

using namespace std;

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

deque <pair <int, int>> d;
char s[3500005];

int main()
{
    int n, k, nr, sol = -30005, poz = 0, p = 0;
    fin >> n >> k;
    fin.getline(s, 5);
    fin.getline(s, 3500005);
    for (int i = 1; i <= n; i++)
    {
        nr = 0;
        bool kk = 0;
        while (s[p] != ' ' && s[p] != NULL)
        {
            if (s[p] == '-')
                kk = 1;
            else
                nr = nr * 10 + (s[p] - '0');
            p++;
        }
        p++;
        if (kk == 1)
            nr *= -1;
        while (!d.empty() && nr <= d.front().first)
            d.pop_front();
        d.push_front(make_pair(nr, i));
        if (d.back().second < i - k + 1)
            d.pop_back();
        if (i >= k && d.back().first > sol)
        {
            sol = d.back().first;
            poz = i;
        }
    }
    fout << poz - k + 1 << ' ' << poz << ' ' << sol << '\n';
    return 0;
}