Mai intai trebuie sa te autentifici.
Cod sursa(job #2045190)
Utilizator | Data | 21 octombrie 2017 21:52:50 | |
---|---|---|---|
Problema | Deque | Scor | 60 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.77 kb |
#include <iostream>
#include <fstream>
#include <deque>
std::ifstream f("deque.in");
std::ofstream g("deque.out");
long long rez;
int main()
{
int N, K;
int v[500005];
f>>N>>K;
for(int i=1; i<=N; i++)
f>>v[i];
std::deque <int> minDq;
int i;
for(i=1; i<=K; i++) {
while(!minDq. empty() && v [minDq. front()] >= v[i])
minDq. pop_front();
minDq. push_front(i);
}
rez += v[minDq. back()];
for(; i<=N; i++) {
if(minDq. back() == i-K)
minDq.pop_back();
while(!minDq. empty() && v [minDq. front()] >= v[i])
minDq. pop_front();
minDq. push_front(i);
rez += v[minDq. back()];
}
g<<rez;
return 0;
}