Cod sursa(job #1728257)

Utilizator TimoteiCopaciu Timotei Timotei Data 12 iulie 2016 16:26:03
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <iostream>
#include <fstream>
using namespace std;
int n, k, number, D[500005], first, last, bestSol = -(1 << 30), bestPoz, poz[500005];
void solve()
{
    ifstream fin("secventa.in");
    ofstream fout("secventa.out");
    fin >> n >> k;
    for(int i = 1; i <= n; ++i){
        fin >> number;
    while(first <= last && number <= D[last])
             last--;
    D[++last] = number;
    poz[last] = i;
    if(i - poz[first] >= k) ++first;
    if(i >= k && D[first] > bestSol){
        bestSol = D[first];
        bestPoz = i;
      }
    }
    fout << bestPoz - k + 1 << ' ' << bestPoz << ' ' << bestSol;
}
int main()
{
    solve();
    return 0;
}