Pagini recente » Cod sursa (job #1021464) | Cod sursa (job #1303525) | Cod sursa (job #424271) | Cod sursa (job #1983358) | Cod sursa (job #2698749)
/*Se da un sir A cu N numere intregi. Pentru fiecare subsecventa de lungime K sa se determine minimul, iar apoi sa se calculeze suma acestor minime. */
#include <fstream>
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
const int NMAX = 5000005;
int a[NMAX], deq[NMAX];
int main()
{
int n, k;
long long sum = 0;
in >> n >> k;
for(int i = 1;i <= n;i ++)
in >> a[i];
int s = 1,e = 0;
for(int i = 1;i <= n;i ++)
{
while(e >= s && a[i] <= a[deq[e]] )
e --;
e ++;
deq[e] = i;
if(deq[s] == i-k)
s ++;
if(i >= k)
sum += a[deq[s]];
}
out << sum;
return 0;
}