Pagini recente » Cod sursa (job #2681843) | Cod sursa (job #566936) | Cod sursa (job #412530) | Cod sursa (job #211053) | Cod sursa (job #87866)
Cod sursa(job #87866)
#include <cstdio>
using namespace std;
struct deque
{
int pos,val;
} q[500000];
int v[500000];
int n,k;
int d1,d2;
int last,first,baza;
void citire()
{
freopen("secventa.in","r",stdin);
scanf("%d%d",&n,&k);
for (int i=0;i<n;i++)
scanf("%d",&v[i]);
fclose(stdin);
}
void calcul()
{
d1=0;
d2=0;
q[0].val=v[0];
q[0].pos=0;
for (int i=1;i<n;i++)
{
while (q[d1].pos<=i-k && d1<=d2)
d1++;
while (q[d2].val>=v[i] && d2>=d1)
d2--;
d2++;
q[d2].val=v[i];
q[d2].pos=i;
if (((q[d1].val > baza) && (i>k-1)) || (i==k-1))
{
baza=q[d1].val;
first=i-k+2;
last=i+1;
}
}
}
int main()
{
citire();
calcul();
freopen("secventa.out","w",stdout);
printf("%d %d %d",first,last,baza);
fclose(stdout);
return 0;
}