Cod sursa(job #1235523)

Utilizator thinkphpAdrian Statescu thinkphp Data 29 septembrie 2014 21:59:33
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <cstdio>
#include <deque>
#define LL long long
#define FIN "deque.in"
#define FOUT "deque.out"
#define MAX 5000000

using namespace std;

int N, k, VEC[ MAX ];

int sum = 0;

deque<pair <LL, int> > DEQUE;

void read() {

     freopen(FIN, "r", stdin);

     scanf("%d %d", &N, &k);

     for(int i = 0; i < N; i++) {

         scanf("%d", &VEC[i]);
     }

     fclose( stdin );
};

void solve() {

     freopen(FOUT, "w", stdout);

     for(int i = 0; i < N; i++) {

          while( !DEQUE.empty() && DEQUE.back().first >= VEC[ i ] )  DEQUE.pop_back();     

          DEQUE.push_back( make_pair( VEC[ i ], i) );

          if(DEQUE.front().second == i - k) DEQUE.pop_front();

          if(i >= k - 1) sum += DEQUE.front().first;
     }

     printf("%d", sum);

     fclose( stdout );
}

int main() {

    read();
    solve();

    return(0);
}