Pagini recente » Cod sursa (job #2143782) | Cod sursa (job #311227) | Cod sursa (job #2258715) | Cod sursa (job #34137) | Cod sursa (job #849539)
Cod sursa(job #849539)
#include<cstdio>
#include<queue>
using namespace std;
const int Nmax = 500001;
int n, k, a[Nmax],pb,vb,p,semn;
char s[10000001];
deque <int> d;
int main()
{
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
scanf("%d %d ", &n, &k);
fgets(s,10000001,stdin);
for(int i=1; i<=n; ++i)
{
//scanf("%d ", &a[i]);
semn=1;
if(s[p]==' ') ++p;
if(s[p]=='-') {semn=-1; ++p;}
while('0'<=s[p] && s[p]<='9') a[i]=a[i]*10+s[p]-'0', ++p;
a[i] *= semn;
}
for(int i=1; i<=k; ++i)
{
while(!d.empty() && a[i] <= a[d.back()]) d.pop_back();
d.push_back(i);
}
vb=a[d.front()];
pb=k;
for(int i=k+1; i<=n; ++i)
{ if(d.front()==i-k) d.pop_front();
while(!d.empty() && a[i] <= a[d.back()]) d.pop_back();
d.push_back(i);
if(a[d.front()]>vb)
{
vb=a[d.front()];
pb=i;
}
}
printf("%d %d %d\n", pb-k+1,pb,vb);
return 0;
}