Pagini recente » Cod sursa (job #519316) | Cod sursa (job #2351672) | Cod sursa (job #899558) | Cod sursa (job #2612625) | Cod sursa (job #2107552)
#include <fstream>
#include <deque>
#define mp make_pair
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int v[1000001];
int n,k;
deque<pair<int,int> > dq;
void getNr(){
long long int sum=0;
for(int i = 1; i<=k ; i++){
pair<int,int>x = mp(v[i],i);
while(!dq.empty() && dq.back().first > v[i]) {dq.pop_back();}
dq.push_back(x);
} sum+=dq.front().first;
for(int i = k+1; i <= n; i++){
while(dq.front().second <= i-k) {dq.pop_front();}
pair<int,int>x = mp(v[i],i);
while(!dq.empty() && dq.back().first > v[i]) {dq.pop_back();}
dq.push_back(x);
sum+=dq.front().first;
}
fout<<sum;
}
int main()
{
fin>>n>>k;
for(int i = 1; i <= n; i++){
fin>>v[i];
}
getNr();
}