Cod sursa(job #1052143)
| Utilizator | Data | 10 decembrie 2013 21:28:31 | |
|---|---|---|---|
| Problema | Deque | Scor | 5 |
| Compilator | c | Status | done |
| Runda | Arhiva educationala | Marime | 0.63 kb |
#include<stdio.h>
#include<stdlib.h>
FILE *f,*g;
int main()
{
int N,K,sfarsit=0,inceput=-1,i;
long long A[100],Deque[100],Suma=0;
f=fopen("deque.in","r");
g=fopen("deque.out","w");
fscanf(f,"%d",&N);
fscanf(f,"%d",&K);
for(i=0;i<N;i++)
fscanf(f,"%llu",&A[i]);
for(i=0;i<N;i++)
{
while(sfarsit<=inceput && A[i]<=A[Deque[inceput]])
inceput=inceput-1;
Deque[++inceput]=i;
if(Deque[sfarsit]==i-K)
sfarsit=sfarsit+1;
if(i>=K-1)
Suma=Suma+A[Deque[sfarsit]];
}
fprintf(g,"%llu",Suma);
return 0;
}
