Cod sursa(job #1783988)

Utilizator horatiucheval2Horatiu Andrei Cheval horatiucheval2 Data 19 octombrie 2016 17:41:08
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include <fstream>

const int MAX = 5000000;
int arr[MAX], deq[MAX];

void print(int arr[], int first, int last){
    for(int i = first; i < last; ++i){
        std::cout << arr[i] << " ";
    }
    std::cout << "\n";
}

int main(){
    std::ifstream fin("deque.in");
    std::ofstream fout("deque.out");

    int n, k, x;
    int sum = 0;
    int first = 0, last = 0;
    fin >> n >> k;

    for(int i = 0; i < k; ++i){
        fin >> arr[i];

        while(last - first > 0 && arr[deq[last - 1]] >= arr[i]){
            last--;
        }
        last++;
        deq[last - 1] = i;
    }

    for(int i = k; i < n; ++i){
        fin >> arr[i];

        for(int j = first; j < last; j++){
            std::cout << deq[j] << " ";
        }
        std::cout << "\n";

        sum += arr[deq[first]];

        if(i - deq[first] >= k){
            first++;
        }

        while(last - first > 0 && arr[deq[last - 1]] >= arr[i]){
            last--;
        }
        last++;
        deq[last - 1] = i;
    }
    sum += arr[deq[first]];

    fout << sum;

    fin.close();
    fout.close();
    return 0;
}