Cod sursa(job #2264796)

Utilizator buhaidarius@gmail.comBuhai Darius [email protected] Data 20 octombrie 2018 11:44:09
Problema Deque Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
//
//  main.cpp
//  Deque
//
//  Created by Darius Buhai on 20/10/2018.
//  Copyright © 2018 Darius Buhai. All rights reserved.
//

#include <iostream>
#include <deque>
#include <fstream>

using namespace std;

ifstream fin("deque.in");
ofstream fout("deque.out");

int n, k, x, s;

deque<pair<int, int>> v;

/// tinem minte elementele in ordine crescatoare
/// Ex: 3 1 4 5 7 9 10 6 9
/// [3] -> [(1) 4 5]
/// [(1) 4 5 7]
/// [(4) 5 7 9 10]
/// [(5) 6]
/// [(6) 9]
/// rez: [1 1 4 5 6]


void rez_deque()
{
    fin>>n>>k;
    int last_added_pos = 0;
    for(int i=0;i<n;i++){
        fin>>x;
        if(!v.empty() && x<v.back().second)
            v.pop_back();
        while(!v.empty() && v.front().second>x)
            v.pop_front();
        pair<int,int> xx(i,x);
        v.push_front(xx);
        if(i-last_added_pos==k-1)
        {
            s+=v.back().second;
            last_added_pos++;
        }
        if(i-v.back().first>=k-1)
            v.pop_back();
    }
    fout<<s;
}

int main() {
    rez_deque();
    return 0;
    
}