Pagini recente » Cod sursa (job #287054) | Cod sursa (job #1785598) | Cod sursa (job #1255134) | Cod sursa (job #1529535) | Cod sursa (job #48655)
Cod sursa(job #48655)
// Problema secventa
#include <stdio.h>
#define MAX 500001
#define MAXIM 32000
int nr[MAX];
long poz[MAX];
long ul, pr;
int main()
{
long n, k, i, q;
int max, el;
freopen( "secventa.in" , "rt", stdin );
scanf( "%ld %ld", &n, &k );
ul = 1; pr = 1;
q = 1;
nr[0] = -MAXIM;
max = -MAXIM;
for( i=1; i<k; i++ )
{
scanf( "%d", &el );
while( ( ul > pr-1 ) && ( el < nr[ul] ) ) ul--;
ul++;
nr[ul] = el;
poz[ul] = i;
}
for( i=k; i<=n; i++ )
{
scanf( "%d", &el );
while( ( ul > pr-1 ) && ( el < nr[ul] ) ) ul--;
ul++;
nr[ul] = el;
poz[ul] = i;
if( i - poz[pr]+1 > k ) pr++;
if( nr[pr] > max )
{
q = i-k+1;
max = nr[pr];
}
}
fclose( stdin );
freopen( "secventa.out", "wt", stdout );
printf( "%ld %ld %d\n", q, q+k-1, max );
fclose( stdout );
return 0;
}