Pagini recente » Cod sursa (job #643418) | Cod sursa (job #908569) | Cod sursa (job #2079155) | Cod sursa (job #3181247) | Cod sursa (job #444841)
Cod sursa(job #444841)
#include <cstdio>
#define Nmax 500001
#define MAX 3000001
using namespace std;
int V[Nmax], Q[Nmax];
char buffer[MAX];
int p;
void ins(int &x)
{
x=0;
int k=buffer[p]=='-'?p++, k=-1 : k=1;
for( ; buffer[p]>='0' && buffer[p]<='9' ; p++)
x = x*10 + buffer[p] - '0';
x*=k;
}
int main(void)
{
int n, k;
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
fread(buffer, 1, MAX, stdin);
ins(n);
p++;
ins(k);
p++;
int i, ind=1;
for(i=1;i<=n;i++)
{
ins(V[i]);
p++;
}
int max=-Nmax,p=0,end=0,beg=1;
for(i=1;i<=n;++i)
{
while(beg <= end && Q[beg]<= i-k)
beg++;
while(beg<=end && V[Q[end]]>V[i])
end--;
Q[++end]=i;
if(V[Q[beg]]>max && i>=k)
{
max=V[Q[beg]];
p=i;
}
}
printf("%d %d %d\n", p-k+1, p, max);
return 0;
}