Cod sursa(job #2293248)

Utilizator dianamichesaRosu Diana Michesa dianamichesa Data 30 noiembrie 2018 17:59:47
Problema Al k-lea termen Fibonacci Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("vila2.in");
ofstream g("vila2.out");
const int N = 100001;
int n, k;
int v[N], stmin, drmin, stmax, drmax, dmax[N], dmin[N];
int diferenta;
int main()
{
    f >> n >> k;
    drmax = drmin = -1;
    for(int i = 1; i <=n ; i ++) {
        f >> v[i];
        if(stmin<=drmin && dmin[stmin]==i-k-1)
           ++stmin;
        while(stmin<=drmin && v[i]<=v[dmin[drmin]])
           --drmin;
        dmin[++drmin]=i;
        if(stmax<=drmax && dmax[stmax]==i-k-1)
           ++stmax;
        while(stmax<=drmax && v[i]>=v[dmax[drmax]])
           --drmax;
        dmax[++drmax]=i;
        if(i >= k + 1)
            diferenta = max(diferenta, v[dmax[stmax]] - v[dmin[stmin]]);
        //g << v[dmax[stmax]] << ' ' << v[dmin[stmin]] << '\n';
    }
    g << diferenta;
    return 0;
}