Cod sursa(job #508574)
| Utilizator | Data | 8 decembrie 2010 21:54:32 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.46 kb |
# include <fstream.h>
ifstream f ("deque.in");
ofstream g ("deque.out");
int p=1,u,j=1,n,k,i,a[5000005],d[5000005];
long long int s;
void pushmin (int poz)
{
while (p<=u && a[d[u]]>a[poz])
u--;
u++;
d[u]=poz;
}
int main ()
{
f>>n>>k;
for (i=1;i<=n;i++)
f>>a[i];
for (i=1;i<=n;i++)
{
pushmin (i);
while (j<=i-k)
j++;
while (d[p]<j)
p++;
if (i>=k)
s=s+a[d[p]];
}
g<<s;
return 0;
}