Pagini recente » Cod sursa (job #2055524) | Cod sursa (job #1888617) | Cod sursa (job #2360983) | Cod sursa (job #457990) | Cod sursa (job #1778700)
#include <iostream>
#include <fstream>
#define DIMMAX 50000
#define FOR(i, a, b) for(int i = a; i <= b; i++)
using namespace std;
int N, K, A[DIMMAX], deque[DIMMAX], stanga=1, dreapta=1; //deque retine pozitiiile elementelor din A[]
long long int suma;
void citire()
{
ifstream f("deque.in");
f >> N >> K;
FOR(i, 1, N)
{
f >> A[i];
}
f.close();
}
void afisare()
{
ofstream g("deque.out");
// FOR(i, 1, N)
// {
// g << deque[i]<< " ";
// }
g<<suma;
g.close();
}
void calcul_suma()
{
deque[1] = 10000001;
FOR(i, 1, N)
{
while (stanga <= dreapta && A[i] <= A[deque[dreapta]]) dreapta--;
deque[++dreapta] = i;
if(deque[stanga] == i-K) stanga++;
if (i >= K) suma += A[deque[stanga]];
}
}
int main()
{
citire();
calcul_suma();
afisare();
return 0;
}