Pagini recente » Cod sursa (job #1741485) | Cod sursa (job #1186947) | Cod sursa (job #876429) | Cod sursa (job #1510165) | Cod sursa (job #1494512)
#include <fstream>
using namespace std;
ofstream out("deque.out");
ifstream in("deque.in");
const int SIZE_MAX = 5000001;
int date[SIZE_MAX], v[SIZE_MAX];
int top = 0, bottom = 0, k;
int lungime()
{
return top - bottom;
}
void pushFront(int val)
{
date[top%SIZE_MAX] = val;
top ++;
}
int topDeque()
{
return date[(top-1)%SIZE_MAX];
}
int bottomDeque()
{
return date[bottom%SIZE_MAX];
}
void popFront()
{
top--;
}
void popBack()
{
bottom++;
}
bool isInSequence(int i)
{
if(bottomDeque() == v[i-k])
return false;
else
return true;
}
int main()
{
int n, val, sum = 0;
in >> n >> k;
in >> val;
v[1] = val;
pushFront(val);
for(int i = 2;i<=n;i++)
{
in >> val;
v[i] = val;
if(val >= topDeque())
pushFront(val);
else
{
while(val < topDeque())
popFront();
pushFront(val);
}
if(!isInSequence(i))
popBack();
if(i>=k)
sum += bottomDeque();
}
out << sum;
return 0;
}