Cod sursa(job #1700577)
| Utilizator | Data | 10 mai 2016 20:15:54 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.6 kb |
#include <fstream>
#include <deque>
#define NM 5000005
using namespace std;
deque<int> d;
int v[NM];
int main()
{
ifstream f("deque.in");
ofstream g("deque.out");
int n, k;
long long s = 0;
f >> n >> k;
for(int i = 1; i <= n; ++i)
f >> v[i];
int p = 1;
while(p <= n)
{
while(d.size() && v[d.back()] > v[p])
d.pop_back();
d.push_back(p);
while(d.size() && d.front() <= p-k)
d.pop_front();
if(p >= k)
s += v[d.front()];
++p;
}
g << s;
}
