Cod sursa(job #936926)
| Utilizator | Data | 9 aprilie 2013 04:28:41 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.46 kb |
#include <fstream>
#include <deque>
using namespace std;
int main() {
ifstream fin("deque.in");
ofstream fout("deque.out");
int n, k;
fin >> n >> k;
long long ans = 0;
deque<pair<int,int> > min;
int a;
for (int i = 1; i <= n; ++i) {
fin >> a;
while (!min.empty() && min.back().second >= a) min.pop_back();
min.push_back(pair<int,int>(i,a));
if (min.front().first == i-k) min.pop_front();
if (i >= k) ans += min.front().second;
}
fout << ans;
return 0;
}
