Pagini recente » Cod sursa (job #2076539) | Cod sursa (job #726005) | Cod sursa (job #799731) | Cod sursa (job #2267673) | Cod sursa (job #1358844)
#include<stdio.h>
#include<deque>
int main()
{
FILE *fin,*fout;
fin=fopen("deque.in","r");
fout=fopen("deque.out","w");
int n,k,t;
fscanf(fin,"%d %d",&n,&k);
long long int s=0;
std::deque<int> de;
std::deque<int> pos;
for(int i=0;i<k;i++)
{
fscanf(fin,"%d",&t);
while(!de.empty()&&t<=de.back())
{
de.pop_back();
pos.pop_back();
}
de.push_back(t);
pos.push_back(i);
}
for(int i=k;i<n;i++)
{
fscanf(fin,"%d",&t);
s+=de.front();
if(pos.front()<=i-k)
{
pos.pop_front();
de.pop_front();
}
while(!de.empty()&&t<=de.back())
{
de.pop_back();
pos.pop_back();
}
de.push_back(t);
pos.push_back(i);
}
s+=de.front();
fprintf(fout,"%lld",s);
}