Pagini recente » Cod sursa (job #2710755) | Cod sursa (job #2942194) | Cod sursa (job #2724786) | Cod sursa (job #154641) | Cod sursa (job #2981208)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream in ("deque.in");
cin.rdbuf(in.rdbuf());
ofstream out ("deque.out");
cout.rdbuf(out.rdbuf());
int nrElemente;
cin >> nrElemente;
int lungimeSecventa;
cin >> lungimeSecventa;
int* sir = new int[nrElemente];
for(int i = 0; i < nrElemente; i++)
cin >> sir[i];
int* coada = new int[lungimeSecventa];
int inceput = 0;
int sfarsit = 1;
coada[inceput] = 0;
int sumaMinime = 0;
for(int i = 1; i < nrElemente; i++)
{
while(sfarsit > 0 && sir[i] <= sir[coada[sfarsit - 1]])
{
sfarsit--;
}
coada[sfarsit] = i;
sfarsit++;
if(i - coada[inceput] >= lungimeSecventa)
inceput++;
if(i + 1 >= lungimeSecventa)
sumaMinime += sir[coada[inceput]];
}
cout << sumaMinime << endl;
delete[] coada;
delete[] sir;
return 0;
}