Cod sursa(job #825260)

Utilizator maritimCristian Lambru maritim Data 28 noiembrie 2012 00:59:37
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<stdio.h>
#include<queue>
using namespace std;

FILE *f = fopen("deque.in","r");
FILE *g = fopen("deque.out","w");

#define ll long long

int N,K;
ll Sol;
priority_queue<pair<int,int> > Q;

void citire(void)
{
    fscanf(f,"%d %d",&N,&K);
}

void Rezolvare(void)
{
    int a;

    for(int i=1;i<=K;i++)
    {
        fscanf(f,"%d",&a);
        Q.push(make_pair(-a,i));
    }

    for(int i=K+1;i<=N+1;i++)
    {
        for(;Q.top().second < i-K;Q.pop());

        Sol += 1LL*-Q.top().first;

        fscanf(f,"%d",&a);
        Q.push(make_pair(-a,i));
    }
}

int main()
{
    citire();
    Rezolvare();

    fprintf(g,"%lld\n",Sol);
}