Cod sursa(job #3003079)

Utilizator AdrianRosuRosu Adrian Andrei AdrianRosu Data 15 martie 2023 14:13:27
Problema Secventa Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include<bits/stdc++.h>
#define y1 nefdi
#define DIM 1000001
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
long long v[DIM];
long long i, n, k, Max = -1e9, st, dr;
deque <int> d;
char c;
bool GetInt(long long &x){
    if(c == -1)
        return false;
    while((c = getchar()) && c == ' ');
    if(c == -1)
        return false;
    long long sign = (c == '-' ? -1 : 1);
    if(isdigit(c))
        x = c - '0';
    else x = 0;
    while((c = getchar()) && isdigit(c))
        x = x * 10 + c - '0';
    x *= sign;
    return true;
}
int main(){
    freopen("secventa.in", "r", stdin);
    GetInt(n);
    GetInt(k);
    for(i=1;i<=n;i++)
        GetInt(v[i]);
    for(i=1;i<=n;i++){
        while(!d.empty() && v[i] <= v[d.back()])
            d.pop_back();
        d.push_back(i);
            while(!d.empty() && i - d.front() >= k)
                d.pop_front();
            if(i >= k){
            if(v[d.front()] > Max){
                st = d.front();
                dr = i;
                Max = v[d.front()];
            }
            }
    }
    fout << st << " " << dr << " " << Max;
}