Cod sursa(job #2193243)

Utilizator lucametehauDart Monkey lucametehau Data 9 aprilie 2018 14:15:12
Problema Secventa Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#include <deque>

using namespace std;

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

const int inf = -30005;
const int nmax = 500000;

int n, k, x;
int sol, st, dr;

int v[1 + nmax];
deque <int> dq;

int get() {
  int Number = 0, sign = 1;
  char ch;
  cin.get(ch);
  if(ch == '-') {
    sign = -1;
    cin.get(ch);
  }
  do {
    Number = Number * 10 + ch - '0';
  } while(isdigit(ch = cin.get()));
  return Number * sign;
}

int main() {
  n = get();
  k = get();
  sol = inf;
  for(int i = 1; i <= n; i++) {
    v[i] = get();
    while(!dq.empty() && v[i] < v[dq.back()])
      dq.pop_back();
    dq.push_back(i);
    if(i - dq.front() == k)
      dq.pop_front();
    if(i >= k && v[dq.front()] > sol) {
      sol = v[dq.front()];
      st = i - k + 1;
      dr = i;
    }
  }
  cout << st << " " << dr << " " << sol;
  return 0;
}