Pagini recente » Cod sursa (job #2746616) | Cod sursa (job #1758955) | Cod sursa (job #2594917) | Cod sursa (job #2370542) | Cod sursa (job #3030447)
#include <fstream>
using namespace std;
ifstream cin("secventa.in");
ofstream cout("secventa.out");
const int dim = 5000000 + 5;
int v[dim], deq[dim], st, dr;
bool empty( )
{
if ( st == dr )
return true;
return false;
}
int back( )
{
return deq[dr - 1];
}
void pop_back()
{
dr--;
}
void pop_front()
{
++st;
}
void push_back(int x)
{
deq[dr] = x;
++dr;
}
int front( )
{
return deq[st];
}
int main()
{
int n, i, j, k;
cin >> n >> k;
for ( i = 1; i <= n; ++i )
cin >> v[i];
for ( i = 1; i <= k; ++i )
{
while ( empty() == false && v[back()] > v[i] )
pop_back();
push_back(i);
}
int maxim = v[front()], poz = front();
for ( i = k + 1; i <= n; ++i )
{
if ( empty() == false && front() <= i - k )
pop_front();
while ( empty() == false && v[back()] > v[i] )
pop_back();
push_back(i);
if ( maxim < v[front()] )
{
maxim = v[front()];
poz = front();
}
}
cout << poz << " " << poz + k - 1 << " " << maxim << endl;
return 0;
}