Pagini recente » Cod sursa (job #576960) | Cod sursa (job #546816) | Cod sursa (job #561172) | Cod sursa (job #1902685) | Cod sursa (job #48110)
Cod sursa(job #48110)
#include <fstream>
#define Nmax 500001
#define MAX 3000001
using namespace std;
int V[Nmax], Q[Nmax];
char buffer[MAX];
int main(void)
{int n, k;
freopen("secventa.in", "r", stdin);
scanf("%d %d", &n , &k);
int i, ind=1;
int len=fread(buffer, 1, MAX, stdin);
for(i=0;i<len;++i)
{if(buffer[i]==' ') ind++;
else V[ind]=V[ind]*10 + buffer[i] - '0';
}
int max=-Nmax, p=0;
int end=0, beg=1;
freopen("secventa.out", "w", stdout);
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;
}