Pagini recente » Statistici Carter Burke (5madisone831gN1) | Monitorul de evaluare | Monitorul de evaluare | Statistici alfl23 (alexflav23) | Cod sursa (job #1176069)
#include <fstream>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
char buffer[5000000*10];
struct deq
{
int min,pos;
} v[1000000];
int main()
{
int n,k,i,r,u,vf=0,vf1=0;
long long sol=0;
fin>>n>>k;
v[vf1].min=10000001;v[vf1].pos=0;
for(i=0;i<k;i++)
{ fin>>r;
for(u=vf1;u>=vf;u--)
{
if(r<v[u].min&&u<vf1) v[u].min=r,v[u].pos=i,vf1=u;
else if(r<v[u].min&&u==vf1) v[vf1].min=r,v[u].pos=i;
}
if(v[vf1].min!=r) v[++vf1].min=r,v[vf1].pos=i;
}
sol=v[vf].min;
for(;i<n;i++)
{
fin>>r;
for(u=vf;u<=vf1;u++) {if(v[u].pos<=i-k) vf++;else break;}
for(u=vf1;u>=vf;u--)
{
if(r<v[u].min&&u<vf1) v[u].min=r,v[u].pos=i,vf1=u;
else if(r<v[u].min&&u==vf1) v[vf1].min=r,v[u].pos=i;
}
if(v[vf1].min!=r) v[++vf1].min=r,v[vf1].pos=i;
sol+=v[vf].min;
}
fout<<sol;
}