Pagini recente » Cod sursa (job #771407) | Cod sursa (job #270518) | Cod sursa (job #598173) | Cod sursa (job #1860835) | Cod sursa (job #2061735)
#include <cstdio>
#include <cctype>
#define BUF_SIZE 131072
#define INF 30001
#define MAXN 500000
char buf[BUF_SIZE];
FILE *fin,*fout;
int dq[MAXN],poz[MAXN],pos=BUF_SIZE,st,vf,maxim,stmax,drmax,crt;
inline char getch()
{
if(pos==BUF_SIZE)
{
fread(buf,BUF_SIZE,1,fin);
pos=0;
}
return buf[pos++];
}
inline int getnr()
{
int x=0;
char ch,semn=1;
ch=getch();
while(isspace(ch))
ch=getch();
if(ch=='-')
semn*=-1,ch=getch();
while(isdigit(ch))
{
x=x*10+ch-'0';
ch=getch();
}
return x*semn;
}
inline void parcurgere(int x,int i)
{
while(vf>=st && dq[vf]>x)
vf--;
dq[++vf]=x;
poz[vf]=i;
}
int main()
{
fin=fopen("secventa.in","r");
fout=fopen("secventa.out","w");
int k,n,x;
n=getnr();k=getnr();
vf=-1;
for(int i=0;i<k;i++)
{
x=getnr();
parcurgere(x,i);
}
maxim=dq[0];stmax=0;drmax=k-1;
for(int i=k;i<n;i++)
{
x=getnr();
parcurgere(x,i);
if(crt==poz[st])
st++;
crt++;
if(dq[st]>maxim)
{
maxim=dq[st];
stmax=crt;drmax=i;
}
}
fprintf(fout,"%d %d %d",stmax+1,drmax+1,maxim);
fclose(fin);
fclose(fout);
return 0;
}