Cod sursa(job #859843)

Utilizator CaligulaGAIVS IVLIVS CAESAR AVGVSTVS GERMANICVS Caligula 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;
}