Pagini recente » Cod sursa (job #2773766) | Cod sursa (job #3128196) | Cod sursa (job #476412) | Cod sursa (job #445082) | Cod sursa (job #2040639)
#include <iostream>
#include <cstdio>
#include <deque>
#define DIM 100000
using namespace std;
char buffer[DIM];
int n,k,vCit[500005],sol[3],cursor=0;
void advanceCurs()
{
cursor++;
if(cursor>=DIM)
{
fread(buffer,1,DIM,stdin);
cursor=0;
}
}
int citesteCifra()
{
int semn=1,numar=0;
while(!(buffer[cursor]>='0'&&buffer[cursor]<='9'))
{
if(buffer[cursor]=='-')
semn=-1;
advanceCurs();
}
while(buffer[cursor]>='0'&&buffer[cursor]<='9')
{
numar=numar*10+(buffer[cursor]-'0');
advanceCurs();
}
return numar;
}
deque <int> aux;
void citire()
{
fread(buffer,1,DIM,stdin);
n=citesteCifra();
k=citesteCifra();
for(int i=1; i<=n; i++)
{
vCit[i]=citesteCifra();
}
}
void comp(int pozMin,int dr)
{
if(vCit[pozMin]>sol[2])
{
sol[0]=dr-k+1;
sol[1]=dr;
sol[2]=vCit[pozMin];
}
}
void solve()
{
for(int i=1; i<=n; i++)
{
while(!aux.empty()&&vCit[aux.back()]>vCit[i])
{
aux.pop_back();
}
aux.push_back(i);
if(aux.front()==i-k)
aux.pop_front();
if(i>=k)
comp(aux.front(),i);
}
printf("%d %d %d",sol[0],sol[1],sol[2]);
}
int main()
{
sol[2]=-0x3f3f3f;
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
citire();
solve();
return 0;
}