Cod sursa(job #1882876)
| Utilizator | Data | 17 februarie 2017 16:07:50 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.58 kb |
#include <cstdio>
#define MAXN 5000000
int sir[MAXN],dq[MAXN];
long long s;
int main()
{
FILE *fin,*fout;
fin=fopen("deque.in","r");
fout=fopen("deque.out","w");
int i,n,k,inc,sf;
fscanf(fin,"%d%d",&n,&k);
inc=sf=0;
for(i=0;i<n;i++)
{
fscanf(fin,"%d",&sir[i]);
while(inc<sf && sir[i]<sir[dq[sf-1]])
sf--;
dq[sf++]=i;
if(dq[inc]==i-k)
inc++;
if(i>=k-1)
s+=sir[dq[inc]];
}
fprintf(fout,"%lld",s);
fclose(fin);
fclose(fout);
return 0;
}
