Cod sursa(job #274110)
Utilizator | Data | 9 martie 2009 14:02:59 | |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.42 kb |
#include <fstream.h>
#define nmax 5000005
ifstream fin("deque.in");
ofstream fout("deque.out");
long n,k,p,u, d[nmax],a[nmax];
long long s;
int main()
{long i;
fin>>n>>k;
for (i=1;i<=n;i++)
fin>>a[i];
p=u=1;
d[1]=1;
for (i=2;i<=n;i++)
{while (p<=u && a[d[u]]>=a[i])
u--;
u++;
d[u]=i;
if (d[p]==i-k) p++;
if (i>=k) s+=a[d[p]];
}
fout<<s;
fout.close();
return 0;
}