Pagini recente » Cod sursa (job #3210088) | Cod sursa (job #1456860) | Cod sursa (job #1455028) | Cod sursa (job #3248856) | Cod sursa (job #811075)
Cod sursa(job #811075)
#include <fstream>
#include <vector>
using namespace std;
long n,k;
long long s;
vector <long> deq;
vector <long> poz;
ifstream in("deque.in");
ofstream out("deque.out");
void scan()
{
in>>n>>k;
}
void deque()
{
long st,dr,a,w;
st=0;
dr=-1;
for (long i=1;i<k;i++)
{
in>>a;
w=0;
while (dr>=st && a<deq[dr])
{
w=1;
dr--;
}
dr++;
if (dr==deq.size())
{
deq.push_back(a);
poz.push_back(i);
}
else
{
deq[dr]=a;
poz[dr]=i;
}
}
for (long i=k;i<=n;i++)
{
in>>a;
while (dr>=st && a<deq[dr])
{
dr--;
}
dr++;
if (dr==deq.size())
{
deq.push_back(a);
poz.push_back(i);
}
else
{
deq[dr]=a;
poz[dr]=i;
}
if (i-poz[st]+1>k)
{
st++;
}
s+=deq[st];
}
out<<s<<"\n";
}
int main()
{
scan();
deque();
return 0;
}