Cod sursa(job #1371087)

Utilizator RazzinnatorRazvan Brinzea Razzinnator Data 3 martie 2015 19:05:25
Problema Deque Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <stdio.h>
#include <deque>
#include <algorithm>

using namespace std;

int v[5000005];

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

int main()
{
    int n, k;
    long long int suma = 0;
    deque<int> q;

    /* read data */
    fscanf( f, "%d%d", &n, &k );
    for( int i = 0; i < n; i++ )
    {
        fscanf( f, "%d", &v[i] );
    }

    /* fill up deque and sort it */
    for( int i = 0; i < k; i++ )
    {
        q.push_back( v[i] );
    }
    sort( q.begin(), q.end() );
    suma += q.front();

    for( int pas = 1; pas <= n-k; pas++ )
    {
        if( q.front() == v[pas-1] )
        {
            q.pop_front();
        }
        while( q.back() > v[k+pas-1] && !q.empty() )
        {
            q.pop_back();
        }
        q.push_back( v[k+pas-1] );
        suma += q.front();
    }

    fprintf( g, "%lld\n", suma );
    fclose( f );
    fclose( g );
    return 0;
}