Cod sursa(job #2887709)

Utilizator mirceaspPetcu Mircea mirceasp Data 10 aprilie 2022 02:05:11
Problema Deque Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.25 kb
#include <iostream>
#include <vector>
#include <stack>
#include <queue>
#include <fstream>
#include <string>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
void push_back(int x,int d[],int &n)
{
    n++;
    d[n-1] = x;
}
void push_front(int x, int d[],int &n)
{
    n++;
    for(int i =n-1;i>=1;i--)
        d[i] = d[i-1];
    d[0] = x;
}
void pop_back(int d[],int &n)
{n--;}
void pop_front(int d[], int &n)
{
    for(int i = 0;i< n;i++)
        d[i] = d[i+1];
    n--;
}
bool vida(int d[],int &n){
    if(n==0)
        return true;
    return false;
}
int front(int d[])
{
    return d[0];
}
int back(int d[],int n)
{
    return d[n-1];
}

int main() {
    int n,k,x,i;
    f>>n>>k;
    i = 0;
    int v[n+1];
    int d[n+1];
    int suma = 0;
    int j = 0;
    while (f>>x)
    {
        v[i] = x;
        i++;
    }
    int size = 0;
    for(i = 0;i<n;i++)
    {
        while (!vida(d,size) && v[i]<v[back(d,size)])
        {
            pop_back(d,size);
        }
        push_back(i,d,size);
        j++;
        if(front(d)==i-k)
            pop_front(d,size);
        if(j>=k)
            suma += v[front(d)];

    }

    g<<suma;
    f.close();g.close();
    return 0;
}