Pagini recente » Cod sursa (job #1848559) | Cod sursa (job #615396) | Cod sursa (job #2218313) | Cod sursa (job #102306) | Cod sursa (job #1714452)
#include <cstdio>
#define NMax 500005
#define INF 30005
int v[NMax];
int deque[NMax];
int main(){
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
int sf,inc,i,n,k,ans=-INF,start,stop;
scanf("%d %d",&n,&k);
for( i = 1; i <= n; ++i ) scanf("%d",&v[i]);
sf = -1;
inc = 0;
for( i = 1; i <= k; ++i )
{
while( sf - inc + 1 > 0 && v[i] <= v[ deque[sf] ] ) sf--;
deque[++sf] = i;
}
for( i = k + 1; i <= n; ++i )
{
if( ans < v[ deque[inc] ] ) { start = i - k; stop = i - 1; ans = v[ deque[inc] ]; }
while( sf - inc + 1 > 0 && deque[inc] <= i - k ) inc++;
while( sf - inc + 1 > 0 && v[i] <= v[ deque[sf] ] ) sf--;
deque[++sf] = i;
}
if( ans < v[ deque[inc] ] ) { start = n - k + 1; stop = n; ans = v[ deque[inc] ]; }
printf("%d %d %d\n",start,stop,ans);
return 0;
}