Cod sursa(job #859843)
| Utilizator | Data | 20 ianuarie 2013 11:24:25 | |
|---|---|---|---|
| Problema | Deque | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.48 kb |
#include<cstdio>
#include<deque>
using namespace std;
FILE *f=fopen("deque.in","r");
FILE *g=fopen("deque.out","w");
deque <int> q;
int n,k,a[5001000];
long long sum;
int main()
{int i;
fscanf(f,"%d%d",&n,&k);
for (i=1;i<=n;++i)
fscanf(f,"%d",&a[i]);
for (i=1;i<=n;++i)
{while (!q.empty() && a[i]<=a[q.back()]) q.pop_back();
q.push_back(i);
if (q.front()==i-k) q.pop_front();
if (i>=k) sum+=a[q.front()];
}
fprintf(g,"%I64d\n",sum);
return 0;
}
