Cod sursa(job #2884878)

Utilizator matei123Biciusca Matei matei123 Data 5 aprilie 2022 09:40:08
Problema Deque Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");

struct element
{   long long val,index;};

long long front = 10000002, back = front - 1, size = 0;
element dq[10000000];
bool empty(long long dim, long long fata) {
    if(dim == fata) return true;
    return false;
}

void push_back(element nr) {
    back++;
    dq[back] = nr;
    size++;
}

void pop_front() {
    front++;
    size--;
}

void pop_back() {
    back--;
    size--;
}

element qfront(element dq[]) {
    return dq[front];
}

element qback(element dq[]) {
    return dq[back];
}

int main() {
    long long n, k, sum = 0;
    f >> n;
    f >> k;
    for(long long i = 1; i <= n; i++) {
        element x; f >> x.val;
        x.index = i;
        while(size > 0 && qback(dq).val >= x.val)
            pop_back();
        push_back(x);
        if(i >= k)
        {   sum += qfront(dq).val;
            g << qfront(dq).val << ' '; }
        if(i >= qfront(dq).index + k - 1)
            pop_front();
    }
    g << sum;
    g.close();
    return 0;
}