Cod sursa(job #1522423)
| Utilizator | Data | 11 noiembrie 2015 18:18:42 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.62 kb |
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
#define MAX 5000100
deque <int> Q;
int a[MAX];
int main()
{
int n, k, i;
long long s = 0;
fin >> n >> k;
for(i = 1 ; i <= n ; i++)
{
fin >> a[i];
}
for(i = 1 ; i <= n ; i++)
{
while(Q.size() && a[i] < a[Q.front()])
Q.pop_front();
Q.push_front(i);
if(Q.back() == i - k)
Q.pop_back();
if(i >= k)
{
s += a[Q.back()];
}
}
fout << s << "\n";
}
