Cod sursa(job #2908484)
Utilizator | Data | 3 iunie 2022 20:16:12 | |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.59 kb |
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5e6;
ifstream fin( "deque.in" );
ofstream fout( "deque.out" );
deque <int> deq;
int v[MAXN];
int main() {
int n, k, i;
long long sum;
fin >> n >> k;
for( i = 0; i < n; i++ )
fin >> v[i];
sum = 0;
for( i = 0; i < n; i++ ) {
while( !deq.empty() && v[i] <= v[deq.back()] )
deq.pop_back();
deq.push_back( i );
if( i - k >= 0 ) {
if( deq.front() == i - k )
deq.pop_front();
}
if( i + 1 >= k )
sum += v[deq.front()];
}
fout << sum;
return 0;
}