Pagini recente » Cod sursa (job #2976924) | Cod sursa (job #2823090) | Cod sursa (job #2674336) | Cod sursa (job #1623639) | Cod sursa (job #1598433)
#include <stdio.h>
#include <stdlib.h>
#define MAX 500001
int Vector[MAX],Deque[MAX];
char * buffer;
void read (int &x)
{
x = 0;
bool semn=0;
while (*(buffer) < '0' || *(buffer) > '9' )
if(*(buffer++) == '-')
semn = 1;
while(*(buffer) >= '0' && *(buffer) <= '9')
x = x * 10 + *(buffer++) - '0';
if(semn)
x *= (-1);
}
int main(void)
{
int numar=-30001,head=1,tail=0,N,K,i,poz_inceput=-30001,poz_terminat=0 , dimensiune;
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
fseek(stdin,0,SEEK_END);
dimensiune = ftell(stdin);
buffer = (char *)(malloc(dimensiune));
rewind(stdin);
fread(buffer,1,dimensiune,stdin);
read(N);
read(K);
for ( i = 1 ; i <= N ; i++)
read(Vector[i]);
for ( i = 1 ; i <= N ; i++)
{
while(head <= tail && Vector[i] <= Vector[Deque[tail]])
--tail;
Deque[++tail] = i;
if(i-K == Deque[head])
head++;
if(i >= K && numar < Vector[Deque[head]])
{
numar = Vector[Deque[head]];
poz_inceput= i-K+1;
poz_terminat=i;
}
}
printf("%d %d %d\n",poz_inceput,poz_terminat,numar);
return 0;
}