Cod sursa(job #1294230)
| Utilizator | Data | 17 decembrie 2014 09:39:48 | |
|---|---|---|---|
| Problema | Deque | Scor | 25 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.56 kb |
#include <cstdio>
#define MAX 5000000
using namespace std;
int dq[MAX+1],v[MAX];
int main()
{
FILE *fin,*fout;
fin=fopen("deque.in","r");
fout=fopen("deque.out","w");
int n,k,i,init=1,vf=0;
long long sum=0;
fscanf(fin,"%d%d",&n,&k);
for(i=1; i<=n; i++)
{
fscanf(fin,"%d",&v[i]);
if(i-dq[init]== k)
{
init++;
}
while(init<=vf && v[i]<v[dq[vf]])
vf--;
dq[++vf]=i;
if(i>=k)
sum+=v[dq[init]];
}
fprintf(fout,"%d",sum);
return 0;
}
