Cod sursa(job #3363239)

Utilizator CorvinJudge0Corvin Judge CorvinJudge0 Data 14 august 2026 13:27:34
Problema Secventa Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.51 kb
#include <bits/stdc++.h>

using namespace std;

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

long long n,k,i,mare=LLONG_MIN,pozl=LLONG_MAX,pozr=LLONG_MAX;
int main()
{
    fin >> n >> k;
    vector<long long> v(n+1),st(n+1),dr(n+1);
    stack <long long> s1,s2;
    for(i=1;i<=n;i++)
        fin >> v[i] ;
    for(i=1;i<=n;i++)
        {
            while(!s1.empty() && v[i]<=v[s1.top()])
                s1.pop();
            if(s1.empty())
                st[i]=LLONG_MIN;
            else
                st[i]=s1.top();
            s1.push(i);


            long long j=n-i+1;
            while(!s2.empty() && v[j]<=v[s2.top()])
                s2.pop();
            if(s2.empty())
                dr[j]=LLONG_MIN;
            else
                dr[j]=s2.top();
            s2.push(j);
        }
    for(i=1;i<=n;i++)
        {
            long long l,r;
            if(st[i]==LLONG_MIN)
                l=1;
            else
                l=st[i]+1;
            if(dr[i]==LLONG_MIN)
                r=n;
            else
                r=dr[i]-1;
            if(l<=i-k)
                l=i-k+1;
            if(r>i+k)
                r=l+k-1;
            if(r-l+1>=k && v[i]>mare)
                {
                    pozl=l ,mare=v[i];
                    pozr=r;
                }
            //cout << i << " " << poz << endl ;
            //cout << i << " " << l << " " << r << " " << v[i] << " " << mare << '\n' ;

        }
    //cout << poz ;
    fout << pozl << " " << pozr << " " << mare;
    return 0;
}