Pagini recente » Cod sursa (job #969806) | Cod sursa (job #1656419) | Cod sursa (job #711882) | Cod sursa (job #485735) | Cod sursa (job #2266223)
#include <fstream>
#include <deque>
using namespace std;
ifstream fin ("vila2.in");
ofstream fout ("vila2.out");
deque <int> d1,d2;
long long n,k,v[5000001],i,s,x,maxi;
int main()
{
fin>>n>>k;
k++;
for (i=1; i<=n; i++)
{
fin>>v[i];
}
d1.push_back(1);
d2.push_back(1);
for (i=2; i<=n; i++)
{
while (!d1.empty()&&v[d1.back()]>=v[i])
{
if (d1.size()>0)
{
d1.pop_back();
}
else break;
}
d1.push_back(i);
if (d1.back()-d1.front()>=k) d1.pop_front();
while (!d2.empty()&&v[d2.back()]<=v[i])
{
if (d2.size()>0)
{
d2.pop_back();
}
else break;
}
d2.push_back(i);
if (d2.back()-d2.front()>=k) d2.pop_front();
if (i>=k) {x=v[d2.front()]-v[d1.front()];
if (x>=maxi) maxi=x;}
}
fout<<maxi;
return 0;
}