Cod sursa(job #2193240)

Utilizator lucametehauDart Monkey lucametehau Data 9 aprilie 2018 14:08:10
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <deque>

using namespace std;

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

const int inf = -30000;
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;
  while(cin.get(ch) && (ch > '9' || ch < '0'))
    sign = -1;
  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;
}