Pagini recente » Cod sursa (job #2240370) | Monitorul de evaluare | Cod sursa (job #1681109) | Cod sursa (job #2981987) | Cod sursa (job #3325757)
#include <fstream>
#include <iostream>
#include <vector>
#include <deque>
using namespace std;
vector <int> v;
deque <int> q;
void add_elem( int i ){
while( q.empty() == false && v[i] < v[q.back()] ){
q.pop_back();
}
q.push_back( i );
}
void del_elem( int i ){
while( q.front() <= i ){
q.pop_front();
}
}
int main(){
int n, k, i, x;
long long ras;
ifstream fin( "deque.in" );
ofstream fout( "deque.out" );
fin >> n >> k;
for( i = 0; i < k - 1; i++ ){
fin >> x;
v.push_back( x );
add_elem( i );
}
ras = 0;
for( i = k - 1; i < n; i++ ){
fin >> x;
v.push_back( x );
add_elem( i );
del_elem( i - k );
ras += v[q.front()];
/*for( int j = 0; j < q.size(); j++ ){
cout << v[q[j]] << ' ';
}
cout << '\n';*/
}
fout << ras;
return 0;
}