Pagini recente » Cod sursa (job #1884150) | Cod sursa (job #2545866) | Cod sursa (job #1528221) | Cod sursa (job #3212945) | Cod sursa (job #812464)
Cod sursa(job #812464)
#include <fstream>
#define NMAX 500002
#define LIM (1<<15)
#define Verifica ++poz == LIM ? in.read(text,LIM) ,poz = 0 : 0
using namespace std;
ifstream in("secventa.in");
ofstream out("secventa.out");
int Deque[NMAX],S,F = -1;
int V[NMAX],N,K;
/************************/
char text[LIM+2];
int poz;
inline void Citeste(int &nr)
{
if(text[poz]=='\0')
in.read(text,LIM);
else for(;text[poz]<'0'||text[poz]>'9';Verifica);
for(;!(text[poz]<'0'||text[poz]>'9' ); nr=nr*10+text[poz]-'0',Verifica);
}
/************************/
int main()
{
int i,Baza = -NMAX,Final;
Citeste(N),Citeste(K);
for(i=1;i<=N;++i)
{
Citeste(V[i]);
if(i - Deque[S] >=K)
++S;
while(F>=S&&V[i]<=V[Deque[F]])
--F;
Deque[++F] = i;
if(i>=K&&V[Deque[S]]>Baza)
Baza = V[Deque[S]], Final = i;
}
out<<Final - K + 1<<' '<<Final<<' '<<Baza<<'\n';
return 0;
}