Cod sursa(job #1962706)

Utilizator GandalfTheWhiteGandalf the White GandalfTheWhite Data 11 aprilie 2017 23:38:15
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>
#include <vector>
#include <deque>
using namespace std;

vector <int> A;
deque <int> Q;
int n,k,bg,en,maxim;


void Read(){

    int i,x;
    freopen("secventa.in","r",stdin);

    scanf("%d%d",&n,&k);
    A.push_back(0);
    for (i=1;i<=n;++i){
        scanf("%d",&x);
        A.push_back(x);
        }
}

void Solve(){

    int i;

    for (i=1;i<=n;++i){

        while (!Q.empty() && A[i]<=A[Q.back()]) Q.pop_back();
        Q.push_back(i);
        if (Q.front()==i-k) Q.pop_front();
        if (i>=k) if (maxim<A[Q.front()]) {
                                          maxim=A[Q.front()];
                                          bg=Q.front();
                                          en=Q.back();
                                          }
        }
}

void Write(){

    freopen("secventa.out","w",stdout);

    printf("%d %d %d",bg,en,maxim);
}
int main()
{
    Read();
    Solve();
    Write();
    return 0;
}