Cod sursa(job #948180)

Utilizator Ionut228Ionut Calofir Ionut228 Data 9 mai 2013 16:54:49
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>
#include <deque>
#include <cstring>

using namespace std;

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

char s[3500002];
int N, K;
int nr, lg, poz, baza;
int V[500002];
deque<int> D;

int main()
{
    fin >> N >> K;
    fin.getline(s, 3500002);
    fin.getline(s, 3500002);
    lg = strlen(s);
    for (int i = 0; i <= lg - 1; ++i)
    {
        int x = 0, semn = 1;
        if (s[i] == '-')
        {
            semn = -1;
            ++i;
        }
        while (s[i] >= '0' && s[i] <= '9')
        {
            x = x * 10 + int(s[i] - '0');
            ++i;
        }
        V[++nr] = x * semn;
    }

    baza = -30001;
    for (int i = 1; i <= N; ++i)
    {
        while (!D.empty() && V[i] <= V[D.back()])
            D.pop_back();
        D.push_back(i);
        if (D.front() == i - K)
            D.pop_front();
        if (i >= K)
        {
            if (V[D.front()] > baza)
            {
                baza = V[D.front()];
                poz = i;
            }
        }
    }

    fout << poz - K + 1 << " " << poz << " " << baza;

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