Pagini recente » Cod sursa (job #2871130) | Cod sursa (job #1592492) | Cod sursa (job #2338901) | Cod sursa (job #3270992) | Cod sursa (job #1780086)
#include <fstream>
#include <deque>
#include <stack>
using namespace std;
ifstream ka("deque.in");
ofstream ki("deque.out");
struct element
{
int val, ord;
};
deque <element> coada;
stack <element> stivatemp;
int n, k, x;
long long suma;
int main()
{
ka >> n >> k >> x;
element el;
el.val = x;
el.ord = 1;
coada.push_back(el);
for(int i = 2; i <= n; i++)
{
ka >> x;
element elo;
elo.val = x;
elo.ord = i;
while(!coada.empty() && x < coada.front().val)
coada.pop_front();
while(!coada.empty() && x > coada.front().val)
{
stivatemp.push(coada.front());
coada.pop_front();
}
coada.push_front(elo);
while(!stivatemp.empty())
{
coada.push_front(stivatemp.top());
stivatemp.pop();
}
if(i >= k)
{
while(i - coada.front().ord + 1 > k)
coada.pop_front();
suma += coada.front().val;
}
}
ki << suma;
}