Cod sursa(job #2637729)
| Utilizator | Data | 24 iulie 2020 15:57:35 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.6 kb |
#include <fstream>
#include <deque>
using namespace std;
ifstream f ("deque.in");
ofstream g ("deque.out");
constexpr int NMAX = 5e6 + 5;
deque <int> D;
int N, K;
int a[NMAX];
long long sol;
int main()
{
f >> N >> K;
for (int i = 1; i <= N; ++ i ) {
f >> a[ i ];
if (D.front() <= i - K) D.pop_front();
while (!D.empty() && a[D.back()] > a[ i ]) {
D.pop_back();
}
D.push_back( i );
if (i >= K) {
sol = sol + 1LL * a[D.front()];
}
}
g << sol << '\n';
return 0;
}
