Cod sursa(job #3336739)

Utilizator vvalentinCiun Valentin vvalentin Data 25 ianuarie 2026 16:41:21
Problema Secventa Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
// https://infoarena.ro/problema/secventa
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin ("secventa.in");
ofstream fout ("secventa.out");
const int NMAX = 5e5;
struct dequeue {
    int b = 1, f = 0, dq[NMAX + 2];
}dq;
int n, k, mx = INT_MIN, Lans, Rans, v[NMAX + 2];
//deque<int> dq;

int main() {
    fin >> n >> k;
    for (int i = 1; i <= n; i++) {
        fin >> v[i];
    }
    for (int i = 1; i <= n; i++) {
        while (dq.b <= dq.f && v[dq.dq[dq.f]] >= v[i]) dq.f--;
        while (dq.b <= dq.f && i - dq.dq[dq.b] >= k) dq.b++;
        dq.dq[++dq.f] = i;
        if (i >= k) {
            if (v[dq.dq[dq.b]] > mx) {
                mx = v[dq.dq[dq.b]];
                Lans = i - k + 1;
                Rans = i;
            }
        }
        /*
        while (dq.size() && v[dq.front()] >= v[i]) dq.pop_front();
        while (dq.size() && i - dq.back() >= k) dq.pop_back();
        dq.push_front(i);
        if (i >= k) {
            if (v[dq.back()] > mx) {
                mx = v[dq.back()];
                Lans = i - k + 1;
                Rans = i;
            }
        }
        */
    }
    fout << Lans << ' ' << Rans << ' ' << mx;
    return 0;
}