Pagini recente » Cod sursa (job #2286096) | Istoria paginii runda/concurs_000003 | Cod sursa (job #673303) | Cod sursa (job #1554209) | Cod sursa (job #604724)
Cod sursa(job #604724)
#include <stdio.h>
#include <deque>
#define N 500005
using namespace std;
int n,k,a[N];
deque<int> q;
int main()
{
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
scanf("%d%d",&n,&k);
for (int i = 0; i< n ; ++i)
scanf("%d",&a[i]);
for (int i = 0 ; i < k ; ++i)
{
while (!q.empty() && a[i] <= a[q.front()] )
q.pop_front();
q.push_front(i);
}
int best = a[q.back()];
int start = 1;
int end = k;
for (int i = k ; i < n ; ++i)
{
while (!q.empty() && q.back() < (i - k + 1))
q.pop_back();
while (!q.empty() && a[i] <= a[q.front()])
q.pop_front();
q.push_front(i);
if (a[q.back()] > best)
{
best = a[q.back()];
start = i - k + 2;
end = i + 1;
}
}
printf("%d %d %d\n",start,end,best);
return 0;
}