Cod sursa(job #2394734)

Utilizator isav_costinVlad Costin Andrei isav_costin Data 1 aprilie 2019 21:09:57
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <deque>

#define MAXN 5000000

using namespace std;

ifstream cin( "deque.in" );
ofstream cout( "deque.out" );

int n, m;
int v[1+MAXN+1];

deque<int> dq;

inline void my_push_back( int p )
{
  while( !dq.empty() && v[p]<v[dq.back()] )
    dq.pop_back();

  dq.push_back(p);
}

inline void my_pop_front( int p )
{
  if( dq.front()==p )
    dq.pop_front();
}

int main()
{
  cin>>n>>m;

  for( int i=1;i<m;i++ )
    cin>>v[i], my_push_back(i);

  long long sum=0;

  for( int i=m;i<=n;i++ )
  {
    cin>>v[i], my_push_back(i);

    sum+=v[dq.front()];

    my_pop_front(i-m+1);
  }

  cout<<sum;

  return 0;
}