Pagini recente » Cod sursa (job #2776277) | Cod sursa (job #1747666) | Cod sursa (job #1830890) | Cod sursa (job #1692418) | Cod sursa (job #2617682)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
class deque{
public:
int *v;
int f;
int r;
int lungime;
deque(int lungime = 2);
~deque();
void insert_end(int);
void delete_front();
void delete_end();
};
deque :: deque(int lung){
f = 1;
r = 0;
this -> lungime = lung;
v = new int[lung];
}
deque ::~deque() {
delete [] v;
}
void deque :: insert_end(int val) {
v[++r] = val;
}
void deque ::delete_front() {
f++;
}
void deque :: delete_end(){
r--;
}
int main() {
int n, k, x;
vector<int> v;
long int suma = 0;
f >> n >> k;
deque d(n);
for(int i = 0; i < n; i++){
f >> x;
v.push_back(x);
};
for(int i = 0; i < n; i++){
while(d.f <= d.r && v[i] <= v[d.v[d.r]])
d.delete_end();
d.insert_end(i);
if (d.v[d.f] == i - k)
d.delete_front();
if (i >= k - 1)
suma += v[d.v[d.f]];
}
g << suma;
return 0;
}