Cod sursa(job #3030447)

Utilizator Andrei1209Andrei Mircea Andrei1209 Data 17 martie 2023 17:53:01
Problema Secventa Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>

using namespace std;
ifstream cin("secventa.in");
ofstream cout("secventa.out");
const int dim = 5000000 + 5;
int v[dim], deq[dim], st, dr;
bool empty( )
{
    if ( st == dr )
        return true;
    return  false;
}
int back( )
{
    return deq[dr - 1];
}
void pop_back()
{
    dr--;
}
void pop_front()
{
    ++st;
}
void push_back(int x)
{
    deq[dr] = x;
    ++dr;
}
int front( )
{
    return deq[st];
}
int main()
{
    int n, i, j, k;
    cin >> n >> k;
    for ( i = 1;  i <= n; ++i )
        cin >> v[i];

    for ( i = 1; i <= k; ++i )
    {
        while ( empty() == false && v[back()] > v[i] )
            pop_back();
        push_back(i);

    }
    int maxim = v[front()], poz = front();

    for ( i = k + 1; i <= n; ++i )
    {
        if ( empty() == false && front() <= i - k )
            pop_front();
        while ( empty() == false && v[back()] > v[i] )
            pop_back();
        push_back(i);
       if ( maxim < v[front()] )
       {
           maxim = v[front()];
           poz = front();
       }

    }
    cout << poz << " " << poz + k  - 1 << " " << maxim << endl;
    return 0;
}