Pagini recente » Cod sursa (job #2603837) | Cod sursa (job #652594) | Cod sursa (job #689281) | Cod sursa (job #2530254) | Cod sursa (job #1316813)
#include <iostream>
#include <fstream>
#include <deque>
#include <algorithm>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int a[5000005],n,k,minn=10000005;
deque <int> coada;
long long sol=0;
void citire()
{
f>>n>>k;
for(int i=1;i<=n;i++) f>>a[i];
}
void solve()
{
coada.push_front(1);
for(int i=2;i<=k;i++)
{
if(a[i]<=a[coada.back()])
{
while(a[i]<=a[coada.back()] && !coada.empty())
coada.pop_back();
}
coada.push_back(i);
}
sol+=a[coada.front()];
//coada.push_back(minn);
// sort(coada+1,coada+k+1);
//cout<<a[coada.front()]<<" ";
for(int i=2;i<=n-k+1;i++)
{
if(a[i-1]==a[coada.front()]) coada.pop_front();
while(a[i+k-1]<=a[coada.back()] && !coada.empty())
{
coada.pop_back();
}
coada.push_back(i+k-1);
if(coada.front()>=i)
sol+=a[coada.front()];
else
coada.pop_front();
//cout<<a[coada.front()]<<" ";
}
}
int main()
{
citire();
solve();
g<<sol;
return 0;
}