Cod sursa(job #2617678)

Utilizator DiagrDiana Grigore Diagr Data 22 mai 2020 16:51:50
Problema Deque Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#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;
    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;
}