Pagini recente » Cod sursa (job #1418804) | Cod sursa (job #1588235) | Cod sursa (job #802647) | Cod sursa (job #1057242) | Cod sursa (job #3242898)
#include <iostream>
#include <fstream>
#include <deque>
#include <vector>
#include <climits>
using namespace std;
int main() {
ifstream fin("sum2.in");
ofstream fout("sum2.out");
deque<long long int> coada;
long long int maxx=LLONG_MIN, N, L, U, i, r;
fin >> N >> L >> U;
vector<long long int> a(N+1), sp(N+1);
for(i=1; i<=N; ++i) {
fin >> a[i];
sp[i] = sp[i-1] + a[i];
}
for(r=L; r<=N; ++r) {
while(!coada.empty() && sp[coada.back()] >= sp[r-L]) {
coada.pop_back();
}
while(!coada.empty() && coada.front() < r-U) {
coada.pop_front(); // ștergem elementele vechi.
}
coada.push_back(r-L);
maxx = max(maxx, sp[r] - sp[coada.front()]);
}
fout << maxx;
}