Pagini recente » Cod sursa (job #2569436) | Cod sursa (job #1587198) | Cod sursa (job #1136964) | Cod sursa (job #1063677) | Cod sursa (job #812470)
Cod sursa(job #812470)
#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)
{
int semn = 1;
if(text[poz]=='\0')
in.read(text,LIM);
else for(;text[poz]<'0'||text[poz]>'9';Verifica)if(text[poz]=='-')semn = -1;
for(nr = 0;text[poz]>='0'&&text[poz]<='9'; nr=nr*10+text[poz]-'0',Verifica);
nr*=semn;
}
/************************/
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;
}