Pagini recente » Cod sursa (job #2355194) | Cod sursa (job #1338654) | Cod sursa (job #1854082) | Cod sursa (job #2869177) | Cod sursa (job #2761982)
#include<fstream>
#include <iostream>
using namespace std;
int v[1000000];
int deque[1000000];
int main()
{
// folosesc coada cu 2 capete in care memorez pozitiile din vectorul
// v si pozitiile vor fi in ordine crescatoare pentru ca stergem mereu cand
// gasim o pozitie din v mai mica
ifstream f("deque.in");
ofstream g("deque.out");
int i, n, k;
int primul, ultim;
int suma = 0;
f >> n>> k;
for (i = 0; i < n; i++) {
f >> v[i];
}
primul = 0;
ultim = -1;
for (i = 0; i < n; i++) {
while (primul <= ultim and v[i] <= v[ultim]) {
ultim--;
}
ultim++;
deque[ultim] = i;
if (deque[primul] + k == i)
primul++;
if (i >= k)
suma = suma + v[deque[primul]];
}
g << suma;
}