Cod sursa(job #1257754)
Utilizator | Data | 8 noiembrie 2014 10:16:32 | |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.61 kb |
#include <fstream>
#include <queue>
using namespace std;
int n, k, v[5000001];
long long s;
deque<int> deq;
int main()
{
ifstream fin ("deque.in");
ofstream fout ("deque.out");
fin >> n >> k;
for (int i = 1; i <= n; i++)
fin >> v[i];
for (int i = 1; i <= n; i++) {
if (!deq.empty() && deq.front () == i-k )
deq.pop_front ();
while (!deq.empty() && v[deq.back()] >= v[i])
deq.pop_back ();
deq.push_back (i);
if (i >= k)
s += v[deq.front ()];
}
fout << s << '\n';
return 0;
}