Cod sursa(job #1046708)

Utilizator dan.ghitaDan Ghita dan.ghita Data 3 decembrie 2013 13:11:30
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <unordered_map>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int v[5000002], n, k;
long long s;
unordered_map<int, int> m;
vector<int> h;
int main()
{
   f>>n>>k;
   for(int i=0; i<n; ++i)
    f>>v[i];
   for(int i=0; i<k; ++i) h.push_back(-v[i]), m[-v[i]]=i;
   make_heap(h.begin(), h.end()); s+=-h.front();
   for(int i=k; i<n; ++i){
        h.push_back(-v[i]); m[-v[i]]=i;
        push_heap(h.begin(), h.end());

        while(m[h.front()]<=i-k){
                pop_heap(h.begin(), h.end());
            h.pop_back();
                }

            s+=-h.front();

   //cout<<-h.front()<<' ';
   }
    g<<s;
//    cout<<s;

    return 0;
}