Pagini recente » Cod sursa (job #1450896) | Cod sursa (job #2698561) | Cod sursa (job #2612478) | Cod sursa (job #1876026) | Cod sursa (job #3133458)
#include <bits/stdc++.h>
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
const int nmax = 500005;
int n,k,V[nmax],poz,maxi=INT_MIN;
deque<int>Dq;
int main()
{
f >>n >>k;
for(int i=1;i<=n;i++)f>>V[i];
Dq.push_back(1);
for(int i=2;i<=k;i++)
{
while(!Dq.empty() && V[Dq.back()] > V[i])Dq.pop_back();
Dq.push_back(i);
}
maxi=A[Dq.front()];
poz=Dq.front();
for(int i=k+1;i<=n;i++)
{
while(!Dq.empty() && Dq.front()+k-1<i)Dq.pop_front();
while(!Dq.empty() && V[Dq.back()]>V[i])Dq.pop_back();
Dq.push_back(i);
if(maxi<V[Dq.front()])
{
maxi=V[Dq.front()];
poz=Dq.front();
}
}
int dr,st,d=1;
dr =st=poz;
for(int i=poz-1;i>=1 && d<k;i--)
if(V[i]>=V[poz]){d ++;st = i;}
else break;
for(int i=poz+1;i<=n && d<k;i++)
if(V[i]>=V[poz]){d++,dr = i;}
else break;
g<<st<<" "<<dr<<" "<<V[poz];