Cod sursa(job #1324607)

Utilizator goalexboxerFMI Alexandru Ionascu goalexboxer Data 22 ianuarie 2015 16:13:33
Problema Deque Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<fstream>
#include<set>
#include<vector>
#include <stdint.h>
#define FIN "deque.in"
#define FOUT "deque.out"
#define MAX 5000000
using namespace std;

ifstream f(FIN);
ofstream g(FOUT);

struct setOrder
{

    bool operator()(long long a,long long int b) const
    {
        return (int)a < (int)b;

    }
};


multiset<int64_t, setOrder> heap;
int64_t arr[MAX];
int64_t sum;
int64_t n,k;



int read()
{

    f >> n;
    f >> k;

    for(int64_t i=1;i<=n;i++)
    {
        f >> arr[i];
    }

    return 0;
}

int solve()
{
    for(int i=1;i<=k;i++)
        heap.insert(arr[i]);

    int64_t index = k;

    while(index < n)
    {
        sum += *heap.begin();

        heap.erase(arr[index - k + 1]);
        heap.insert(arr[index + 1]);

        index++;

    }

    sum += *heap.begin();

    return 0;
}

int write()
{
    g << sum;
}

int main()
{
    read();
    solve();
    write();
}