Pagini recente » Cod sursa (job #2474174) | Cod sursa (job #1817676) | Cod sursa (job #1821294) | Cod sursa (job #2266055) | Cod sursa (job #850001)
Cod sursa(job #850001)
#include<cstdio>
#include<queue>
using namespace std;
int n, k, a[50000001],pf,vf,p,semn;
char s[1000000001];
deque <int> d;
int main()
{
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
scanf("%d %d ", &n, &k);
fgets(s,1000,stdin);
for(int i=1; i<=n; ++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);
}
vf=a[d.front()];
pf=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()]>vf)
{
vf=a[d.front()];
pf=i;
}
}
printf("%d %d %d\n", pf-k+1,pf,vf);
return 0;
}