Pagini recente » Borderou de evaluare (job #1642757) | Cod sursa (job #2297307) | Cod sursa (job #2776972) | Cod sursa (job #1640539) | Cod sursa (job #2812450)
#include<iostream>
#include<fstream>
#include<deque>
#include<climits>
using namespace std;
struct ij
{
int val;
int pos;
};
deque <ij> st;
int n, v[1001], mi = INT_MAX, s, I, k, i;
int main()
{
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d%d", &n, &k);
for( i = 1; i <= n; i++)
scanf("%d", &v[i]);
for( i = 1; i <= k; i++)
{
if(v[i] <= mi)
mi = min(mi, v[i]), I = i;
while(!st.empty() && st.front().val > v[i])
st.pop_front();
st.push_front({v[i], i});
}
s += mi;
for( i = k + 1; i <= n; i++)
{
while(!st.empty() && st.back().pos < i - k + 1)
st.pop_back();
while(!st.empty() && st.front().val > v[i])
st.pop_front();
st.push_front({v[i], i});
s += st.back().val;
}
printf("%d", s);
}