Pagini recente » Cod sursa (job #1938387) | Cod sursa (job #1272538) | Cod sursa (job #1272819) | Cod sursa (job #2735829) | Cod sursa (job #1764688)
#include<cstdio>
#include<deque>
#include<algorithm>
#define max_n 500001
#define f first
#define s second
using namespace std;
deque<pair<int,int> > mn;
int n, i, a[max_n], sol, unde, k;
/*debug*/
pair<int,int> p;
int main(){
freopen("secventa.cpp","r",stdin);
freopen("secventa.cpp","w",stdout);
scanf("%d%d", &n, &k);
for (i=1;i<=n;i++) scanf("%d", &a[i]);
for (i=1;i<=k;i++) {
while ((!mn.empty())&&(a[i]<(mn.back()).f)) mn.pop_back();
mn.push_back(make_pair(a[i], i));
}
sol=(mn.front()).f; unde=k; ///unde=pozitie final
for (i=k+1;i<=n;i++) {
while ((!mn.empty())&&(a[i]<(mn.back()).f)) mn.pop_back();
mn.push_back(make_pair(a[i], i));
while ((!mn.empty())&&((mn.front()).s<i-k+1)) mn.pop_front();
/**/p=mn.front();
if ((mn.front()).f>sol) {sol=(mn.front()).f; unde=i;}
}
printf("%d %d %d", unde-k+1, unde, sol);
return 0;
}