Cod sursa(job #2446566)

Utilizator claudiu.gatinaFMI Claudiu Gatina claudiu.gatina Data 9 august 2019 17:42:34
Problema Secventa Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <vector>
#include <queue>
#define NRMIN -30001
#define NRMAX 30001
#define NMAX 500002
using namespace std;

int v[NMAX];

int main()
{
  freopen("secventa.in", "r", stdin);
  freopen("secventa.out", "w", stdout);

  int n, k;
  scanf("%d", &n);
  scanf("%d", &k);

  for (int i = 1; i <= n; ++i)
  {
    scanf("%d", &v[i]);
  }

  int minimum = NRMAX;
  int posLastMin = 0;
  for (int i = 1; i <= k; ++i)
  {
    if (v[i] < minimum)
    {
      minimum = v[i];
      posLastMin = i;
    }
  }

  int sol = minimum;
  int solPos = 1;
  int roi = posLastMin + 1;
  minimum = v[roi];
  for (int i = posLastMin + 1; i <= n; ++i)
  {
    if (v[i] < sol)
    {
      roi = i + 1;
      minimum = v[i + 1];
      continue;
    }
    if (v[i] < minimum)
      minimum = v[i];
    if (i - roi == k - 1)
    {
      sol = minimum;
      solPos = roi;
      ++roi;
    }
  }

  printf("%d %d %d", solPos, solPos + k - 1, sol);
  return 0;
}