Pagini recente » Cod sursa (job #950711) | Cod sursa (job #2502051) | Cod sursa (job #1806848) | Cod sursa (job #3168144) | Cod sursa (job #811698)
Cod sursa(job #811698)
#include <cstdio>
#include <cstdlib>
void afisare(int *deque,int min,int max)
{
printf("\n");
for ( int i = min; i <= max; i++ )
printf("%2d ",deque[i]);
printf("\n");
}
int main()
{
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
int *v,*deque;
int n,K,i,s=0;
int min,max,val;
v = (int *)calloc(n+1,sizeof(int ));
deque = (int *)calloc(n+1,sizeof(int ));
scanf("%d %d ", &n, &K);
for (i = 1; i <= n; i++)
scanf("%d ", &v[i]);
// for (i = 1; i <= n; i++)
// printf("%d ", v[i]);
// printf("\n");
min = 1;
max = 0;
for ( i = 1; i <= n; i++ )
{
val = v[i];
while ( val <= v[deque[max]] && min <= max ) max--;
deque[++max] = i;
if ( deque[min] == i-K ) min++;
//afisare(deque,min,max);
if ( i >= K ) s += v[deque[min]];
//printf(".%d.",s);
}
printf("\n%d", s);
system("pause");
return 0;
}