Pagini recente » Cod sursa (job #264429) | Cod sursa (job #815845) | Cod sursa (job #1658869) | Cod sursa (job #2225868) | Cod sursa (job #1246281)
#include <fstream>
#include <deque>
using namespace std;
ifstream in("secventa.in");
ofstream out("secventa.out");
const int INF = (1<<30);
const int NMAX = 500000;
deque <int> dq;
int N, K, Mx= -INF, st;
int v[NMAX+1];
void NExt_I32 ( int &nr ) {
char c;
int semn= 1;
in.get(c);
if( c == '-' ) {
semn= -1;
in.get(c);
}
while( c > 47 && c < 59 ) {
nr= nr*10+c-48;
in.get(c);
}
nr*= semn;
}
int main() {
in >> N >> K; in.get();
for( int i= 1; i<=K; ++i ) {
NExt_I32( v[i] );
while( !dq.empty() && v[i] < v[ dq.back() ] )
dq.pop_back();
dq.push_back( i );
}
Mx= v[ dq.front() ]; st= 1;
for( int i= K+1; i<=N; ++i ) {
NExt_I32( v[i] );
if( dq.front() <= i-K )
dq.pop_front();
while( !dq.empty() && v[i] < v[ dq.back() ] )
dq.pop_back();
dq.push_back( i );
if( v[ dq.front() ] > Mx ) {
Mx= v[ dq.front() ];
st= i-K+1;
}
}
out << st << ' ' << st+K-1 << ' ' << Mx << '\n';
return 0;
}