Pagini recente » Cod sursa (job #336337) | Cod sursa (job #862114) | Cod sursa (job #762950) | Cod sursa (job #763477) | Cod sursa (job #3304014)
#include<cstdio>
#include<deque>
using namespace std;
const int NMAX = 500001;
int v[NMAX];
int main() {
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
int n,k,i;
scanf("%d %d",&n,&k);
for(i=1;i<=n;i++) {
scanf("%d",&v[i]);
}
deque<int> q;
for(i=1;i<=k;i++) {
while(!q.empty() && q.back()>v[i]) {
q.pop_back();
}
q.push_back(i);
}
int baza_min,st,dr;
baza_min = v[q.front()];
st = 1;
dr = k;
for (i=k;i<=n;i++) {
while(!q.empty() && v[q.back()]>=v[i]) {
q.pop_back();
}
q.push_back(i);
if (q.front() < i - k + 1) {
q.pop_front();
}
if (v[q.front()] > baza_min ||
(v[q.front()] == baza_min && i - k + 1 < st) ||
(v[q.front()] == baza_min && i - k + 1 == st && i < dr)) {
baza_min = v[q.front()];
st = i - k + 1;
dr = i;
}
}
printf("%d %d %d",st,dr,baza_min);
return 0;
}