Pagini recente » Cod sursa (job #1298014) | Cod sursa (job #2109761) | Cod sursa (job #1140982) | Cod sursa (job #2215494) | Cod sursa (job #2008898)
#include <iostream>
#include <fstream>
#include <climits>
#define NMAX 500001
#define VMIN LLONG_MIN
using namespace std;
ifstream in ("secventa.in");
ofstream out("secventa.out");
int n, k, v[NMAX];//date de intrare
int coada[NMAX], st, dr;
long long valMAx;
int stMax, drMAx;
void citire(){
in >> n >> k;
for(int i = 1; i <= n; i++){
in >> v[i];
}
}
void rezolvare(){
long long valMAx = LLONG_MIN;
st = 1;
dr = 0;
for(int i = 1; i <= n; i++){
while(v[coada[dr]] > v[i] && dr >= st){
dr --;
}
coada[++dr] = i;
if((i - k) == coada[st]){
st ++;
}
if(i >= k && v[coada[st]] > valMAx){
valMAx = v[coada[st]];
stMax = i - k + 1;
drMAx = i;
}
}
out << stMax << ' ' << drMAx << ' ' << valMAx ;
}
int main(){
citire();
rezolvare();
return 0;
}