Cod sursa(job #2468618)

Utilizator evelina.nitoiuNitoiu Evelina evelina.nitoiu Data 5 octombrie 2019 18:20:01
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <iostream>
#include <fstream>
#include <deque>

using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");

const int nmax=5000005;
int a[nmax],n,k;
long long s;
deque <int> d;
int main()
{
    in>>n>>k;
    for(int i=1;i<=n;i++)
        in>>a[i];
    for(int i=1;i<=n;i++){
        while(!d.empty()&&a[i]<=a[d.back()])
            d.pop_back();
        d.push_back(i);
        if(d.front()==i-k)
            d.pop_front();
        if(i>=k)
            s+=a[d.front()];
        //cout<<s<<" ";
    }
    out<<s<<"\n";
    return 0;
}
//#include <fstream>
//#include <deque>
//using namespace std;
//
//ifstream cin("deque.in");
//ofstream cout("deque.out");
//
//int n, k, a[5000001];
//long long S;
//deque < int > d;
//
//int main()
//{
//    cin >> n >> k;
//    for (int i = 1; i <= n; i++)
//        cin >> a[i];
//    cin.close();
//
//    for (int i = 1; i <= n; i++) {
//        while (!d.empty() && a[i] <= a[d.back()]) d.pop_back();
//        d.push_back(i);
//        if (d.front() == i - k) d.pop_front();
//
//        if (i >= k) S += a[d.front()];
//    }
//
//    cout << S;
//    cout.close();
//    return 0;
//}