Cod sursa(job #1533163)
Utilizator | Data | 22 noiembrie 2015 10:37:42 | |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.47 kb |
#include <fstream>
#define maxn 5000100
using namespace std;
int a[maxn],deque[maxn],Front1,Back1,n,k;
long long sum;
int main()
{ ifstream f("deque.in");
ofstream g("deque.out");
int i;
f>>n>>k;
for(i=1;i<=n;i++)
f>>a[i];
Front1=1; Back1=0;
for(i=1;i<=n;i++)
{ while (Front1<=Back1&&a[i]<=a[deque[Back1]]) Back1--;
deque[++Back1]=i;
if(deque[Front1]==i-k) Front1++;
if(i>=k) sum+=a[deque[Front1]];
}
g<<sum;
return 0;
}