Pagini recente » Cod sursa (job #1955263) | Cod sursa (job #3171328) | Cod sursa (job #1049099) | Cod sursa (job #2243871) | Cod sursa (job #3032024)
#include <fstream>
#include <deque>
using namespace std;
ifstream cin("deque.in");
ofstream cout("deque.out");
const int N = 5 * 1e6 + 9;
int n,k,v[N];
class dqueue
{
private:
deque<pair<int,int>> dq;
public:
void push(int val,int ind)
{
while(!dq.empty() && dq.back().first >= val)
dq.pop_back();
dq.push_back({val,ind});
}
int query(int ind)
{
while(!dq.empty() && dq.front().second < ind)
dq.pop_front();
if(dq.size() == 0)
return -1;
return dq.front().first;
}
};
int main()
{
dqueue dq;
cin>>n>>k;
for(int i = 1; i <= n; ++i)
cin>>v[i];
for(int i = 1; i < k; ++i)
dq.push(v[i],i);
long long ans = 0;
for(int i = k; i <= n; ++i)
{
dq.push(v[i],i);
ans += dq.query(i - k + 1);
}
cout<<ans;
return 0;
}