Pagini recente » Cod sursa (job #2423823) | Cod sursa (job #2195885) | Cod sursa (job #1509479) | Cod sursa (job #101410) | Cod sursa (job #2675287)
#include <bits/stdc++.h>
using namespace std;
FILE *fin=fopen("deque.in", "r");
FILE *fout=fopen("deque.out", "w");
deque < pair < int, int > > dq; /// valoare si timp
int oldTime=1, n, k, V[5000005];
long long s;
void fast ()
{
ios_base::sync_with_stdio(false);
cin.tie();
}
void add (pair <int, int> x)
{
while (!dq.empty() && dq.back().first> x.first)
dq.pop_back();
dq.push_back(x);
}
void _remove ()
{
if (dq.front().second==oldTime)
dq.pop_front();
oldTime++;
}
int getMin () /// minimul din dq
{
return dq.front().first;
}
int main()
{
fast();
fscanf(fin,"%lld %lld", &n, &k);
for (int i=1; i<=n; i++)
fscanf(fin,"%lld", &V[i]);
for (int i=1; i<=k; i++)
add({V[i],i});
s+=getMin();
for (int i=k+1; i<=n; i++)
{
_remove();
add({V[i],i});
s+=getMin();
}
fprintf(fout,"%lld", s);
return 0;
}