Pagini recente » Cod sursa (job #2504777) | Cod sursa (job #1852611) | Cod sursa (job #2712265) | Cod sursa (job #2762047) | Cod sursa (job #48270)
Cod sursa(job #48270)
#include <fstream>
#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;
for( ; buffer[p]>='0' && buffer[p]<='9' ; p++)
x = x*10 + buffer[p] - '0';
}
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++;
}
//for(i=0;i<len;++i)
// {if(buffer[i]==' ') ind++; //printf("*");}
// else V[ind]=V[ind]*10 + buffer[i] - '0';//printf("%d\n",V[ind]);}
// }
int max=-Nmax, p=0;
int end=0, beg=1;
//printf("%d\n", V[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\n", V[Q[beg]]);
}
printf("%d %d %d\n", p-k+1, p, max);
return 0;
}