Pagini recente » Cod sursa (job #1476651) | Cod sursa (job #2634499) | Cod sursa (job #771413) | Cod sursa (job #645532) | Cod sursa (job #603712)
Cod sursa(job #603712)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct list
{
short info;
int poz;
} S[500003];
int n ,k;
char s[3000010];
int main()
{
int x, max = -31000;
int i, umax = 0;
list *nod, *aux;
char *xs;
int prim, ultim;
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
scanf("%d %d", &n, &k);
gets(s);
gets(s);
xs = strtok(s, " ");
i = 1;
ultim = 0;
prim = 1;
while(xs != NULL)
{
x = atoi(xs);
while(ultim>=prim && S[ultim].info > x)
{
ultim --;
}
if(ultim>=prim && i - S[prim].poz >= k)
{
prim++;
}
ultim ++;
S[ultim].info = x;
S[ultim].poz = i;
if(i>=k && max < S[prim].info)
{
max = S[prim].info;
umax = S[ultim].poz - k + 1;
}
xs = strtok(NULL, " ");
i++;
}
printf("%d %d %d", umax, umax + k -1, max);
return 0;
}