Pagini recente » Cod sursa (job #2298535) | Clasament runda_3_sediul_turnurilor_minime | Cod sursa (job #1542952) | Cod sursa (job #1476739) | Cod sursa (job #135948)
Cod sursa(job #135948)
#include<fstream.h>
#include<iostream.h>
#include<stdlib.h>
long n,i,k,max,s1,s2,p1,p2;
long a[500001],x[500001],poz[500001];
char *s,c[10000000];
int main(void)
{
ifstream in("secventa.in");
ofstream out("secventa.out");
in>>n>>k;
in>>c;
s=c;
for(i=1;i<n;i++)
{
a[i]=atol(s);
s=strchr(s,' ');
s++;
}
a[n]=atol(s);
max=-32000;
x[1]=a[1];
poz[1]=1;
s1=1;
s2=1;
for(i=2;i<=n;i++)
{
while(s1<=s2&&poz[s1]<=i-k)
s1++;
while(s1<=s2&&x[s2]>=a[i])
s2--;
s2++;
x[s2]=a[i];
poz[s2]=i;
if(i>=k&&[s1]>max)
{
max=x[s1];
p2=i;
p1=p2-k+1;
}
}
out<<p1<<" "<<p2<<" "<<max;
return 0;
}