Cod sursa(job #390284)
Utilizator | Data | 3 februarie 2010 13:40:43 | |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.49 kb |
#include<fstream.h>
#define max 5000001
long a[max],n,k,in,sf,deque[max];
long long suma;
int main()
{
long i;
ifstream fin("deque.in");
fin>>n>>k;
for (i=1; i<=n; i++)
fin>>a[i];
in=1; sf=0;
for (i=1; i<=n; i++)
{
while (in<=sf && a[i]<=a[deque[sf]])
sf--;
sf++;
deque[sf]=i;
if (deque[in]==i-k)
in++;
if (i>=k)
suma=suma+a[deque[in]];
}
ofstream fout("deque.out");
fout<<suma;
fin.close();
fout.close();
return 0;
}