Cod sursa(job #770122)
| Utilizator | Data | 22 iulie 2012 02:54:44 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.5 kb |
#include<fstream>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int n,k,i;
int deque[5000010],a[5000010];
int front, back;
long long sum;
int main()
{f>>n>>k;
for(i=1; i<=n; i++)
f>>a[i];
front=1; back=0; //deque vid
for(i=1; i<=n; i++)
{while(front<=back && a[i]<=a[deque[back]]) back--;
back++;
deque[back]=i;
if(deque[front]==i-k) front++;
if(i>=k) sum+=a[deque[front]];
}
g<<sum;
f.close();
g.close();
return 0;}
