Pagini recente » Cod sursa (job #2550949) | Cod sursa (job #2137945) | Rating Perju Andrei (Wenky) | Clasament mytest | Cod sursa (job #2293248)
#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;
}