Pagini recente » Statistici Patras Ionut Marcelin (heyieiro) | Cod sursa (job #150751) | Cod sursa (job #521214) | Istoria paginii runda/aleatoriu/clasament | Cod sursa (job #2019689)
#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;
}