Pagini recente » Cod sursa (job #493600) | Cod sursa (job #713778) | Cod sursa (job #2471131) | Cod sursa (job #2079112) | Cod sursa (job #1010939)
#include <fstream>
#include <deque>
#include <string>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
const int nmax= 500000;
const int inf= 1<<30;
string buffer;
string::iterator buffer_it;
deque <int> d;
int v[nmax+1];
void read_int( int &x ) {
while ( ('0'>*buffer_it || *buffer_it>'9') && *buffer_it!='-' ) {
++buffer_it;
}
int sign;
if ( *buffer_it=='-' ) {
sign= -1;
++buffer_it;
} else {
sign= 1;
}
x= 0;
while ( '0'<=*buffer_it && *buffer_it<='9' ) {
x= x*10+*buffer_it-'0';
++buffer_it;
}
x*= sign;
}
int main( )
{
getline(fin, buffer, (char)0);
buffer_it= buffer.begin();
int n, k, p= 0, sol= -inf;
read_int(n); read_int(k);
for ( int i= 1; i<=n; ++i ) {
read_int(v[i]);
if ( i-k==d.front() ) {
d.pop_front();
}
while ( d.empty()==0 && v[i]<v[d.back()] ) {
d.pop_back();
}
d.push_back(i);
if ( k<=i && sol<v[d.front()] ) {
p= i;
sol= v[d.front()];
}
}
fout<<p-k+1<<" "<<p<<" "<<sol<<"\n";
return 0;
}