Cod sursa(job #1164407)
| Utilizator | Data | 2 aprilie 2014 01:08:47 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.53 kb |
#include <fstream>
#include <deque>
using namespace std;
const int MAX = 5000005;
int N, K, V[MAX];
long long Ans;
deque<int> Dq;
int main() {
ifstream in("deque.in");
in >> N >> K;
for(int i = 1; i <= N; i++) {
in >> V[i];
while(!Dq.empty() && V[Dq.back()] >= V[i])
Dq.pop_back();
Dq.push_back(i);
while(Dq.front() <= i - K)
Dq.pop_front();
if(i >= K)
Ans += V[Dq.front()];
} in.close();
ofstream out("deque.out");
out << Ans << "\n";
}
