Pagini recente » Cod sursa (job #1756735) | Cod sursa (job #1517776) | Cod sursa (job #690719) | Cod sursa (job #1431050) | Cod sursa (job #1289171)
#include<stdio.h>
#include<fstream>
#include<deque>
#define NMAX 500007
#define INF -0x3f3f3f3f
#define MaxChar 10000000
#define verf ( (++CharB==MaxChar) ? ( in.read(Buffer,MaxChar),CharB=0 ) : (1) )
using namespace std;
ifstream in("secventa.in");
deque <int> Deq;
int a[NMAX];
int n, k, Min, Poz, CharB = MaxChar - 1;
char Buffer [ MaxChar ];
void cit ( int &a ){
bool ok=0;
for ( ; !( (Buffer[ CharB ]>='0' && Buffer[ CharB ]<='9') || ( Buffer[ CharB ] == '-' ) ); verf );
if ( Buffer[ CharB ] == '-' ){
CharB++;
ok=1;
}
for ( a=0; (Buffer[ CharB ]>='0' && Buffer[ CharB ]<='9'); a*=10,a+=( Buffer[ CharB ]-'0'), verf );
if ( ok ){
a=-a;
}
}
int main(){
freopen("secventa.out", "w", stdout);
cit(n);
cit(k);
for(int i = 1; i <= n; ++i)
cit(a[i]);
Min = INF;
for(int i = 1; i <= n ; ++i){
while(! Deq.empty() && a[Deq.back()] > a[i])
Deq.pop_back();
Deq.push_back(i);
if(Deq.front() <= i - k)
Deq.pop_front();
if(i >= k && a[Deq.front()] > Min){
Min = a[Deq.front()];
Poz = i;
}
}
printf("%d %d %d\n", Poz - k + 1, Poz, Min);
return 0;
}