Pagini recente » Cod sursa (job #2614631) | Cod sursa (job #2702429) | Cod sursa (job #397047) | Cod sursa (job #3285743) | Cod sursa (job #2884848)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
pair<int,int> deq[20000005];
int front = 10000002, back = front - 1;
int size = 0;
void push_back(int value, int index)
{
back ++;
deq[back] = {value, index}; //introducem perechi de numar | index
size ++;
}
void push_front(int value, int index)
{
front --;
deq[front] = {value, index};
size ++;
}
void pop_back()
{
back--;
size--;
}
void pop_front()
{
front++;
size--;
}
pair<int,int> front_el()
{
return deq[front];
}
pair<int,int> back_el()
{
return deq[back];
}
int main ()
{
int n,i,j,k,nr;
long long suma = 0;
fin>>n>>k;
for(i=1;i<=n;i++)
{
fin>>nr;
while(size > 0 && back_el().first >= nr)
{
pop_back();
}
push_back(nr, i);
if(i >= k)
suma += front_el().first;
if(i >= front_el().second + k - 1){
pop_front();
}
}
fout<<suma;
return 0;
}