Cod sursa(job #2008898)

Utilizator ruxandramateiMatei Ruxandra ruxandramatei Data 7 august 2017 22:16:58
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <climits>
#define NMAX 500001
#define VMIN LLONG_MIN

using namespace std;

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

int n, k, v[NMAX];//date de intrare
int coada[NMAX], st, dr;
long long valMAx;
int stMax, drMAx;

void citire(){
  in >> n >> k;
  for(int i = 1; i <= n; i++){
    in >> v[i];
  }
}

void rezolvare(){
  long long valMAx = LLONG_MIN;
  st = 1;
  dr = 0;
  for(int i = 1; i <= n; i++){
    while(v[coada[dr]] > v[i] && dr >= st){
      dr --;
    }
    coada[++dr] = i;
    if((i - k) == coada[st]){
      st ++;
    }
    if(i >= k && v[coada[st]] > valMAx){
      valMAx = v[coada[st]];
      stMax = i - k + 1;
      drMAx = i;
    }
  }
  out << stMax << ' ' << drMAx << ' ' << valMAx ;
}

int main(){
  citire();
  rezolvare();
  return 0;
}