Pagini recente » Cod sursa (job #1208782) | Cod sursa (job #553178) | Cod sursa (job #183001) | Cod sursa (job #2878385) | Cod sursa (job #71966)
Cod sursa(job #71966)
#include<stdio.h>
#define v 500002
int a[v],w[v],b[v];
long k,n,q,e,max=-31000,inc,sf,li,lf,l;
char c;
int getnn()
{
int rez=0,r=1;
if (c=='-')
{
r=-1;
scanf("%c", &c);
}
while (c>=48 && c<= 57)
{
rez=rez*10 +c-48;
scanf("%c", &c);
if (feof(stdin))
break;
}
/*while ((c<48 || c>57) && (c!=26))
scanf("%c", &c);*/
return rez*r;
}
void citire()
{
scanf("%ld%ld\n", &n, &k);
q=-1;
e=0;
for (long i=0; i<n; i++)
{
// scanf("%d", &a[i]);
scanf("%c", &c);
a[i]=getnn();
++q;
w[q]=a[i];
b[q]=i;
if (b[q]-b[e]+1>k)
++e;
while (w[q]<w[q-1] && q-1>=e)
{
w[q-1]=w[q];
b[q-1]=b[q];
--q;
}
/**/
l=b[q]-b[e]+1;
//li=b[e];
li=b[q]-k+1;
if (li<0)
li=0;
lf=b[q];
if (w[e]>max && lf-li+1>=k)
{
max=w[e];
inc=li+1;
sf=lf+1;
}
}
}
void scrie()
{
freopen("secventa.out","w",stdout);
printf("%ld %ld %ld\n",inc,sf,max);
fclose(stdout);
}
int main()
{
freopen("secventa.in","r",stdin);
citire();
scrie();
fclose(stdin);
return 0;
}