Pagini recente » Cod sursa (job #3189145) | Cod sursa (job #3153048) | Cod sursa (job #1764428) | Cod sursa (job #620944) | Cod sursa (job #2468618)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
const int nmax=5000005;
int a[nmax],n,k;
long long s;
deque <int> d;
int main()
{
in>>n>>k;
for(int i=1;i<=n;i++)
in>>a[i];
for(int i=1;i<=n;i++){
while(!d.empty()&&a[i]<=a[d.back()])
d.pop_back();
d.push_back(i);
if(d.front()==i-k)
d.pop_front();
if(i>=k)
s+=a[d.front()];
//cout<<s<<" ";
}
out<<s<<"\n";
return 0;
}
//#include <fstream>
//#include <deque>
//using namespace std;
//
//ifstream cin("deque.in");
//ofstream cout("deque.out");
//
//int n, k, a[5000001];
//long long S;
//deque < int > d;
//
//int main()
//{
// cin >> n >> k;
// for (int i = 1; i <= n; i++)
// cin >> a[i];
// cin.close();
//
// for (int i = 1; i <= n; i++) {
// while (!d.empty() && a[i] <= a[d.back()]) d.pop_back();
// d.push_back(i);
// if (d.front() == i - k) d.pop_front();
//
// if (i >= k) S += a[d.front()];
// }
//
// cout << S;
// cout.close();
// return 0;
//}