Pagini recente » Cod sursa (job #3343249) | Cod sursa (job #287537) | Cod sursa (job #3353162) | Cod sursa (job #464904) | Cod sursa (job #3315468)
#include <fstream>
#include <deque>
using namespace std;
int nr[500005];
deque<int> dq;
int main()
{
ifstream cin("secventa.in");
ofstream cout("secventa.out");
int N,K,maxi=0,poz;
cin>>N>>K;
for(int i=1;i<=N;i++)
{
cin>>nr[i];
}
for(int i=1;i<=N;i++)
{
///elimin elementele care nu mai sunt in interval
while(dq.empty()==0 && dq.front()<=i-K)
{
dq.pop_front();
}
///elimin elementele care nu mai au cum sa fie minime pt ca a venit alt minim
while(dq.empty()==0 && nr[dq.back()] >=nr[i])
{
dq.pop_back();
}
dq.push_back(i);
if(i>=K)
{
if(nr[dq.front()]>maxi)
{
maxi=nr[dq.front()];
poz=i;
}
}
}
cout<<poz-K+1<<' '<<poz<<' '<<maxi;
return 0;
}