Pagini recente » Cod sursa (job #2187406) | Cod sursa (job #991897) | Cod sursa (job #16369) | Cod sursa (job #1147646) | Cod sursa (job #1935470)
#include <stdio.h>
#include <ctype.h>
#include <algorithm>
#include <cstring>
#define BUF_SIZE 50000
int a[500005];
int de[500005];
int fr,bc,pf;
int maxi=-300000;
FILE *f=fopen("secventa.in","r");
FILE *g=fopen("secventa.out","w");
int pos=BUF_SIZE;
char buf[BUF_SIZE];
inline char getChar(FILE *f) {
if (pos == BUF_SIZE) {
fread(buf, 1, BUF_SIZE, f);
pos = 0;
}
return buf[pos++];
}
inline int read(FILE *f) {
int result = 0;
char c;
do {
c = getChar(f);
} while (!isdigit(c));
do {
result = 10 * result + c - '0';
c = getChar(f);
} while (isdigit(c));
return result;
}
int main()
{ int n,k;
n=read(f);
k=read(f);
int i;
fr=1; bc=0;
for(i=1;i<=n;++i)
{
a[i]=read(f);
while(fr<=bc && a[i]<a[de[bc]] ) bc--;
de[++bc]=i;
if(de[fr]==i-k) fr++;
if(i>=k)
if(a[de[fr]] >maxi ) {maxi=a[de[fr]]; pf=i;}
}
fprintf(g,"%d %d %d",pf-k+1,pf,maxi);
return 0;
}