Cod sursa(job #2019689)

Utilizator 18.1.26.22.1.14Bobei Razvan 18.1.26.22.1.14 Data 8 septembrie 2017 12:39:24
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>

#define nmax 5000005
using namespace std;

ifstream f("deque.in");
ofstream g("deque.out");

int N , st[nmax] , k , v[nmax] , t[nmax] , a[nmax] , K , S;

int main()
{
   f >> N >> K;
   for(int i = 1 ; i <= N ; i++ )
   {
     f >> a[i];
     while(st[k] > a[i] && k)
     { v[t[k]] = i;
       st[k] = t[k] = 0;
       k--;
     }
     st[++k] = a[i];
     t[k] = i;
   }
   for(int i = 1 ; i <= N - K + 1 ; i++)
    if(v[i] - i + 1 == K) S = S + a[v[i]];
    else if(v[i] - i + 1 > K)
       S = S + a[i];
    else
    {
     int m = i;
     while(v[m] <= i + K - 1 && v[m])
      if(v[m]) m = v[m] ;
     S = S + a[m];
    }
   g << S << "\n";

    return 0;
}