Pagini recente » Cod sursa (job #1378167) | Cod sursa (job #258574) | Cod sursa (job #88702) | Cod sursa (job #1260415) | Cod sursa (job #2723671)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("deque.in");
ofstream fout ("deque.out");
struct Node{
int value;
Node* nextNode;
};
class Deque{
Node* firstNode;
Node* lastNode;
int dequeSize;
int minim;
public:
Deque(){
firstNode = NULL;
lastNode = NULL;
dequeSize = 0;
minim = 1000000000;
}
void push(int value){
Node* newNode = new Node;
newNode -> value = value;
newNode -> nextNode = NULL;
if (firstNode == NULL){
firstNode = newNode;
lastNode = newNode;
}else{
lastNode -> nextNode = newNode;
lastNode = lastNode -> nextNode;
}
dequeSize++;
minim = min(minim, value);
}
void pop(){
if(firstNode != NULL){
Node* aux = firstNode -> nextNode;
delete firstNode;
firstNode = aux;
}
dequeSize--;
updateMinim();
}
void updateMinim(){
minim = 1000000000;
Node* node = firstNode;
while (node != NULL){
minim = min(minim, node -> value);
node = node -> nextNode;
}
}
int getMin(){
return minim;
}
int getSize(){
return dequeSize;
}
};
int main(){
int n, k, x;
long long sol = 0;
Deque d;
fin >> n >> k;
for (int i = 1; i <= n ; i++){
fin >> x;
d.push(x);
if (d.getSize() > k){
d.pop();
}
if (d.getSize() == k){
sol += d.getMin();
}
}
fout << sol;
}