Pagini recente » Cod sursa (job #465297) | Cod sursa (job #3016125) | Cod sursa (job #523785) | Cod sursa (job #532194) | Cod sursa (job #558154)
Cod sursa(job #558154)
#include<fstream>
#include<iostream>
using namespace std;
int a[5000001],q[5000001],n,k,pr,ul,minim,poz,min1[5000001];
long long suma;
void Citire()
{
ifstream f ("deque.in");
f>>n>>k;
for (int i=1;i<=n;i++)
f>>a[i];
f.close();
}
int Minim(int x , int y)
{
int i,minim1=q[x],pz=x;
for (i=x;i<=y;i++)
if (q[i]<minim1) {minim1=q[i];pz=i;}
return pz;
}
void Deque()
{
int i;
pr=ul=1;
minim=a[1];
suma+=minim;
poz=1;
for (i=1;i<=k;i++)
{
q[ul++]=a[i];
if (minim>a[i]) {minim=a[i];poz=i;}
}
for (i=k+1;i<=n;i++)
{
if (a[i]<=minim) {q[ul++]=a[i];minim=a[i];poz=i;}
else
{
q[ul++]=a[i];
if (poz==pr)
{
poz=Minim(pr+1,ul-1);
minim=q[poz];
}
}
suma+=minim;pr++;
}
}
int main()
{
Citire();
Deque();
ofstream f("deque.out");
f<<suma<<"\n";
f.close();
return 0;
}