Pagini recente » Cod sursa (job #337075) | Cod sursa (job #1608110) | Cod sursa (job #1648895) | Cod sursa (job #1498129) | Cod sursa (job #1951373)
#include <bits/stdc++.h>
using namespace std;
char pbuf[1<<17], *pp = pbuf, *pep = pp + sizeof(pbuf);
int n,k;
long long s=0;
vector <int> V;
deque <int> DQ;
ifstream f("deque.in");
ofstream g("deque.out");
void adv()
{
if(++pp == pep) f.read(pp=pbuf, sizeof(pbuf));
}
int _get()
{
int rez = 0;
while(*pp < '0' && *pp != '-') adv();
bool neg = (*pp == '-');
if(neg) adv();
while(*pp >= '0') rez = 10 * rez + *pp - '0', adv();
return neg ? -rez : rez;
}
int main()
{
f.read(pbuf, sizeof(pbuf));
n=_get();k=_get();
for(int i=0; i<k; i++)
{
int x;
x=_get();
V.push_back(x);
while( !DQ.empty() && V[DQ.back()]>=x ) DQ.pop_back();
DQ.push_back(i);
}
for(int i=k,st=0; i<n; i++,st++)
{
s+=V[DQ.front()];
int x;
x=_get();
V.push_back(x);
if(DQ.front()==st) DQ.pop_front();
while( !DQ.empty() && V[DQ.back()]>=x ) DQ.pop_back();
DQ.push_back(i);
}
s+=V[DQ.front()];
g<<s;
}