Pagini recente » Cod sursa (job #2399000) | Cod sursa (job #2349657) | Cod sursa (job #3278861) | Cod sursa (job #433194) | Cod sursa (job #1473905)
#include <cstdio>
#include <fstream>
#include <sstream>
using namespace std;
#define Max(a, b) (a) > (b)? (a):(b)
const char iname[] = "secventa.in";
const char oname[] = "secventa.out";
const int MAXN = 500005;
const int MINVAL = -30005;
const int MAXVAL = 30005;
int A[MAXN], Deque[MAXN], n, k, maxbase = MINVAL;
char buffer[4194304];
int main()
{
freopen(oname, "w", stdout);
freopen(iname, "r", stdin);
setvbuf(stdin,buffer,_IOFBF,sizeof(buffer));
scanf("%d %d\n", &n, &k);
for(int i = 1; i <= n ; ++i){
scanf("%d ", A+i);
}
int first = 1, last = 0, st, fn;
for(int i = 1; i <= n; ++i){
while(first <= last && Deque[first] <= i-k) first++;
while(last >= first && A[Deque[last]] >= A[i]) last --;
Deque[++last] = i;
if(i>=k && A[Deque[first]] > maxbase){
maxbase = A[Deque[first]];
st = i-k+1;
fn = i;
}
}
printf("%d %d %d", st, fn, maxbase);
return 0;
}