# PBinfo #3937 – KSum3 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Cerința
Se dă N și un vector de N elemente numere întregi, găsiți suma maximă a unei subsecvențe (elemente adiacente) cu lungimile cuprinse între K și W (K ≤ lungime ≤ W).

Date de intrare
Programul citește de la tastatură numerele N, K, W iar apoi un vector de N numere întregi.

Date de ieșire
Programul va afișa pe ecran numărul S, reprezentând suma maxima a unei subsecvențe care respectă condițiile din enunț.

Restricții și precizări

1 ≤ K ≤ W ≤ N ≤ 1.000.000
cele N numere citite vor fi din intervalul [-1.000.000.000, 1.000.000.000].

Exemplu:
Intrare

6 3 4
5 4 -10 1 2 3
Ieșire

6
Explicație
Secvența căutată este [4, 6] cu suma 1 + 2 + 3 = 6.

## Cod sursă C++

```cpp
#include<bits/stdc++.h>
using namespace std;
int n,k,w;
long long s[1000005];
deque<int>q;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cin>>n>>k>>w;
    for(int i=1;i<=n;i++)cin>>s[i],s[i]+=s[i-1];
    long long mx(s[k]);
    for(int i=k;i<=n;i++){
        if(q.front()==i-w-1)q.pop_front();
        while(!q.empty()&&s[q.back()]>s[i-k])q.pop_back();
        q.push_back(i-k);
        mx=max(mx,s[i]-s[q.front()]);
    }
    cout<<mx;
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3937)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3937/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3937/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
