Pagini recente » Cod sursa (job #19017) | Cod sursa (job #627782) | Cod sursa (job #70137) | Cod sursa (job #2195913) | Cod sursa (job #1546854)
#include <fstream>
using namespace std;
ifstream F("deque.in");
ofstream G("deque.out");
class deque
{
private:
static const int N = 10000010;
int begin, end, array[N];
public:
deque()
{
begin = N/2;
end = N/2;
}
int front()
{
return array[begin];
}
int back()
{
return array[end-1];
}
void push_front(int x)
{
begin--;
array[begin] = x;
}
void push_back(int x)
{
array[end] = x;
end++;
}
void pop_front()
{
begin++;
}
void pop_back()
{
end--;
}
bool empty()
{
return begin == end;
}
int size()
{
return end - begin;
}
};
int n,k,a[5000010];
deque dq = deque();
int main()
{
F>>n>>k;
for (int i = 1; i <= n; ++i)
F>>a[i];
long long sum = 0;
for (int i = 1; i <= n; ++i)
{
if ( !dq.empty() )
while ( a[i] <= a[ dq.back() ] )
{
dq.pop_back();
if ( dq.empty() )
break;
}
dq.push_back( i );
if ( dq.front() == i - k )
dq.pop_front();
if ( i >= k )
sum += a[ dq.front() ];
}
G<<sum<<'\n';
}