Pagini recente » Borderou de evaluare (job #244562) | Cod sursa (job #3195017) | Borderou de evaluare (job #1426887) | Borderou de evaluare (job #460712) | Cod sursa (job #2161905)
#include <fstream>
#include <deque>
#include <climits>
#include <iostream>
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
deque <int> d;
int n,k,i,maxim=INT_MIN,poz,v[500001];
int main()
{
f>>n>>k;
for(i=1; i<=n; i++)
{
f>>v[i];
if(i<=k)
{
while(d.size()>=1&&v[d.front()]>=v[i])
{
d.pop_front();
}
d.push_front(i);
if(v[d.back()]>maxim){maxim=v[d.back()];poz=k;}
}
else
{
while(d.size()>=1&&d.back()<=i-k)d.pop_back();
while(d.size()>=1&&v[d.front()]>=v[i])
{
d.pop_front();
}
d.push_front(i);
if(v[d.back()]>maxim)
{
maxim=v[d.back()];
poz=i;
}
}
}
g<<poz-k+1<<" "<<poz<<" "<<maxim;
return 0;
}