Pagini recente » Cod sursa (job #2116823) | Cod sursa (job #1929727) | Cod sursa (job #1734986) | Cod sursa (job #225889) | Cod sursa (job #590307)
Cod sursa(job #590307)
#include<stdio.h>
long int n;
long int k;
int a;
int Deck[500001];
int P[500001];
int Front = 1;
long int Back = 0;
long int mar = -30001;
long int poz;
void citire(void)
{
FILE *f = fopen("secventa.in","r");
fscanf(f,"%d %d",&n,&k);
P[0] = 1;
for(int i=1;i<=n;i++)
{
fscanf(f,"%d",&a);
Back ++;
while(Back>=Front && Deck[--Back]>a);
Deck[++Back] = a;
P[Back] = i;
if(P[Front]<=i-k)
Front ++;
if(P[Back] >= k && Deck[Front]>mar)
{
poz = P[Front-1] + 1;
mar = Deck[Front];
if(poz>i-k)
poz = i-k+1;
}
}
fclose(f);
}
int main()
{
FILE *f = fopen("secventa.out","w");
citire();
fprintf(f,"%d %d %d",poz,poz + k-1,mar);
fclose(f);
return 0;
}