Cod sursa(job #1309065)

Utilizator dica69Alexandru Lincan dica69 Data 5 ianuarie 2015 10:40:44
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <cstdio>
#include <deque>

using namespace std;

long a[5000001],n,k,i;
long long S;
deque <int> deq;

int main()
{FILE *f1 = fopen("deque.in","r");
FILE *f2 = fopen("deque.out","w");
fscanf(f1,"%ld%ld",&n,&k);
for (i=1;i<=n;i++) fscanf(f1,"%ld",&a[i]);
S=0;
for (i=1;i<=n;i++)
{while (!deq.empty() && a[i]<=a[deq.back()]) deq.pop_back();
deq.push_back(i);
if (deq.front()==i-k) deq.pop_front();
if (i>=k) S+=a[deq.front()];
}
fprintf(f2,"%lld",S);
fclose(f1);
fclose(f2);
    return 0;
}

//Challenges are what make life interesting and overcoming them is what makes life meaningful.