Pagini recente » Cod sursa (job #1383856) | Cod sursa (job #1296447) | Cod sursa (job #2425348) | Cod sursa (job #363206) | Cod sursa (job #2453645)
#include <iostream>
#include <fstream>
#include <deque>
#include <vector>
#define maxVectorSize 5000005
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int listNumber, seqNumber;
long long result = 0;
deque <int> Dq;
vector <int> vec(maxVectorSize);
int main()
{
int listElement;
fin >> listNumber >> seqNumber;
for(int i = 1; i <= listNumber ; i++)
{
fin >> listElement;
vec[i] = listElement;
}
Dq.push_back(1);//pushing into the deque the first element
for(int i = 2 ; i <= seqNumber ; i++)
{
while(!Dq.empty() && vec[i] <= vec[Dq.back()])
Dq.pop_back();
Dq.push_back(i);
}
result += vec[Dq.front()];
for(int i = seqNumber + 1 ; i <= listNumber ; i++)
{
while(!Dq.empty() && i - Dq.front() >= seqNumber)// removing all the elements that doesn t belong to the current sequence
Dq.pop_front();
while(!Dq.empty() && vec[i] <= vec[Dq.back()])
Dq.pop_back();
Dq.push_back(i);
result += vec[Dq.front()];
}
fout << result << "\n";
return 0;
}