Pagini recente » Cod sursa (job #2296098) | Cod sursa (job #227347) | Cod sursa (job #1070998) | Cod sursa (job #2203151) | Cod sursa (job #1735258)
#include<cstdio>
#include<deque>
#define INF 2000000000
#define DIM 30005
using namespace std;
int n, k, v[500005], maxim, st, dr;
deque<int> d;
char buffer[DIM];
int poz = 0;
void citeste( int &numar ){
numar = 0;
char semn = '+';
while( buffer[poz] < '0' || buffer[poz] > '9' ){
semn = buffer[poz];
poz++;
if( poz == DIM ){
fread( buffer, 1, DIM, stdin);
poz = 0;
}
}
while( buffer[poz] >= '0' || buffer[poz] <= '9' ){
numar = numar * 10 + ( buffer[poz] - '0' );
poz++;
if( poz == DIM ){
fread( buffer, 1, DIM, stdin);
poz = 0;
}
}
if( semn == '-' ){
numar = -numar;
}
return ;
}
int main(){
freopen( "secventa.in", "r", stdin );
freopen( "secventa.out", "w", stdout );
fread( buffer, 1, DIM, stdin);
citeste(n);
citeste(k);
for( int i = 1; i <= n; i++ ){
citeste( v[i] );
}
maxim = -INF;
for( int i = 1; i <= n; i++ ){
while( !d.empty() && v[d.back()] > v[i] ){
d.pop_back();
}
d.push_back(i);
if( d.front() <= i - k ){
d.pop_front();
}
if( i >= k ){
if( maxim < v[d.front()] ){
maxim = v[d.front()];
st = i - k + 1;
dr = st + k - 1;
}
}
}
printf( "%d %d %d", st, dr, maxim );
return 0;
}