Pagini recente » Cod sursa (job #564835) | Cod sursa (job #4378) | Cod sursa (job #2637700) | Cod sursa (job #2439188) | Cod sursa (job #1000074)
#include <iostream>
#include <fstream>
#include <climits>
#include <deque>
using namespace std;
const int Nmax = 500005;
int N, K;
int A[Nmax];
int maxim = -INT_MAX, stanga, dreapta;
int main()
{
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
scanf("%d %d", &N, &K);
for ( int i = 1; i <= N; ++i )
scanf("%d", &A[i]);
deque <int> DQ;
for ( int i = 1; i <= N; ++i )
{
while ( DQ.size() && DQ.front() < i - K + 1 )
DQ.pop_front();
while ( DQ.size() && A[ DQ.back() ] >= A[i] )
DQ.pop_back();
DQ.push_back( i );
int m = A[ DQ.front() ];
if ( m > maxim && i >= K )
{
maxim = m;
stanga = i - K + 1;
dreapta = i;
}
}
printf("%d %d %d\n", stanga, dreapta, maxim);
return 0;
}