Cod sursa(job #2865756)

Utilizator Darius1414Dobre Darius Adrian Darius1414 Data 9 martie 2022 10:17:30
Problema Deque Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.54 kb
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
deque <int> deq;
deque <int> poz;
int main()
{
    int rsp=0,n,k,x;
    ifstream f ("deque.in");
    ofstream g ("deque.out");
    f>>n>>k;
    for (int i=1; i<=n; i++)
    {
        f>>x;
        if (deq.size()!=0)
        {
            if (poz.front()<=i-k)
            {
                poz.pop_front();
                deq.pop_front();
            }
            else if (poz.back()<=i-k)
            {
                poz.pop_back();
                deq.pop_back();
            }
        }
        if (deq.size()==0)
        {
            deq.push_front(x);
            poz.push_front(i);
        }
        else if (deq.size()==1)
        {
            if (x<=deq.front())
            {
                deq.clear();
                poz.clear();
                deq.push_front(x);
                poz.push_front(i);
            }
            else
            {
                deq.push_back(x);
                poz.push_back(i);
            }
        }
        else
        {
            if (x<=deq.front())
            {
                deq.clear();
                poz.clear();
                deq.push_front(x);
                poz.push_front(i);
            }
            else if (x<=deq.back())
            {
                deq.pop_back();
                poz.pop_back();
                deq.push_back(x);
                poz.push_back(i);
            }
        }
        if (i>=k) rsp+=deq.front();
    }
    g<<rsp;
}