Pagini recente » Cod sursa (job #2305586) | Cod sursa (job #2286758) | Cod sursa (job #1495399) | Cod sursa (job #1104810) | Cod sursa (job #2675289)
#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,"%d %d", &n, &k);
for (int i=1; i<=n; i++)
fscanf(fin,"%d", &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;
}