Pagini recente » Cod sursa (job #1424641) | Cod sursa (job #2310618) | Cod sursa (job #1517477) | Cod sursa (job #1497069) | Cod sursa (job #3127625)
#include <fstream>
#include <stack>
#include <vector>
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
long long v[5000001];
int main()
{
long long n, k, sum = 0;
stack<long long> stiva;
vector<long long> index;
in >> n >> k;
for (int i = 0; i < n; i++)
in >> v[i];
for (int i = 0; i < n; i++) {
do {
if (stiva.empty() == false && v[stiva.top()] > v[i])
{
stiva.pop();
index.pop_back();
}
else
break;
} while (true);
stiva.push(i);
index.push_back(i);
if (i - index.front() >= k)
index.erase(index.begin());
if (i >= k - 1)
sum += v[index.front()];
}
out << sum << endl;
return 0;
}