Cod sursa(job #3351245)

Utilizator sefulafemeiemanuel sefulafemei Data 18 aprilie 2026 08:51:32
Problema Secventa Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.51 kb
#include <bits/stdc++.h>
using namespace std;
#define goala(dq) dq.empty()

int n, k;
int v[500005], l[500005], r[500005];

ifstream f ("secventa.in");
ofstream g ("secventa.out");

int main(){
    f >> n >> k;
     
    for(int i = 0; i < n; i++)
        f >> v[i];


    stack<int> S;

    for(int i = 0;i < n; i++){
        while (!S.empty() && v[S.top()] >= v[i])
            S.pop();
        
            if(S.empty())
                l[i] = -1;
            else
                l[i] = S.top();

            S.push(i);
    }

    while(!S.empty()) 
        S.pop();

    for(int i = n-1; i >= 0; i--){
        while(!S.empty() && v[S.top()] >= v[i])
            S.pop();

        if(S.empty())
            r[i] = n;
        else
            r[i] = S.top();

        S.push(i);
    }

    int maxim = -30003, bunstart, bunend;

    for(int i= 0; i < n; i++){
        int st = l[i] + 1;
        int dr = r[i] - 1;
        int lung  = dr - st + 1;

        if(lung >= k){
            int start = st;
            int end = st + k - 1;
            int mic = v[i];

            if (mic > maxim) {
                maxim = mic;
                bunstart = start;
                bunend = end;
            }
            else if (mic == maxim){
                if (start < bunstart){
                    bunstart = start;
                    bunend = end;
                }
                else if (start == bunstart && end < bunend)
                    bunend = end;
            }
        }
    }
    
    g << bunstart << " " << bunend << " " << maxim;
}