Cod sursa(job #1667674)
| Utilizator | Data | 29 martie 2016 09:30:15 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.62 kb |
#include <cstdio>
using namespace std;
int d[5000005],v[5000005];
int main()
{
FILE *fin=fopen ("deque.in","r");
FILE *fout=fopen ("deque.out","w");
int n,k,i,p,u;
long long s=0;
fscanf (fin,"%d%d",&n,&k);
for (i=1;i<=n;i++)
fscanf (fin,"%d",&v[i]);
d[1]=1;
p=1;
u=1;
for (i=2;i<=n;i++){
while (p<=u && v[i]<=v[d[u]])
u--;
u++;
d[u]=i;
if (i-d[p]==k)
p++;
if (i>=k){
s+=v[d[p]];
//printf ("%d ",v[d[p]]);
}
}
fprintf (fout,"%lld",s);
return 0;
}
