Cod sursa(job #2766457)

Utilizator Andrei_TudorAndrei Tudor Andrei_Tudor Data 1 august 2021 19:47:12
Problema Deque Scor 5
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 2.08 kb
#include <fstream>
#include <deque>
using namespace std;
deque <int> d;
ifstream cin("deque.in");
ofstream cout("deque.out");
int main()
{
    int n, k, nr, s = 0, minn;
    cin >> n >> k;
    for(int i = 1; i <= k; i ++){
        cin >> nr;
        d.push_back(nr);
    }
    minn = 10000005;
    if(d.size() == k){
        for(auto elem : d){
            if(minn > elem){
                minn = elem;
            }
        }
    }
    if(minn != 10000005){
        s += minn;
    }
    for(int i = k + 1; i <= n; i ++){
        cin >> nr;
        d.push_back(nr);
        while(d[0] > d[1] && i < n){
            minn = 10000005;
            if(d.size() == k){
                for(auto elem : d){
                    if(minn > elem){
                        minn = elem;
                    }
                }
            }
            if(minn != 10000005){
                s += minn;
            }
            d.pop_front();
            cin >> nr;
            d.push_back(nr);
            i ++;
        }
        d.pop_front();
        for(auto elem : d){
            if(elem < d.front()){
                while(d.front() > elem){
                    minn = 10000005;
                    if(d.size() == k){
                        for(auto elem : d){
                            if(minn > elem){
                                minn = elem;
                            }
                        }
                    }
                    if(minn != 10000005){
                        s += minn;
                    }
                    d.pop_front();
                    if(i < n){
                        cin >> nr;
                        d.push_back(nr);
                        i ++;
                    }
                }
            }
        }
        minn = 10000005;
        if(d.size() == k){
            for(auto elem : d){
                if(minn > elem){
                    minn = elem;
                }
            }
        }
        if(minn != 10000005){
            s += minn;
        }
    }
    cout << s;
    return 0;
}