Pagini recente » Cod sursa (job #492263) | Cod sursa (job #2799028) | Cod sursa (job #1113809) | Cod sursa (job #628658) | Cod sursa (job #2367942)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int n,m,v[5000010];
//int A[5000001],Deque[5000001];
int main()
{
fin>>n>>m;
int a,b,c,minn;
long long s=0;//int Front = 1, Back = 0;
// for(int i=1;i<=n;i++)
// {
// fin>>A[i];
// }
for(int i=1;i<=n;i++)
{
fin>>v[i];
if(i>=m)
{
minn=v[i-m+1];
for(int j=i-m+2;j<=i;j++)
{
if(minn>v[j])
{
minn=v[j];
}
}
s+=minn;
}
// while (Front <= Back && A[i] <= A[ Deque[Back] ]) Back--;
// /// Adaugam pozitia elementului curent in deque
// Deque[++Back] = i;
//
// /// Daca elementul minim coincide cu cel de pe pozita i-m, ii eliminam pozitia din deque, deoarece acesta nu mai conteaza pentru pasii >= i
// if (Deque[Front] == i-m) Front++;
//
// /// Afisam minimul, acesta aflandu-se in varful deque-ului
// if (i >= m) s += A[ Deque[Front]];
}
// for(int i=1;i<=n;i++)
// {
// fout<<Deque[i]<<endl;
// }
fout<<s;
return 0;
}