# PBinfo #3959 – MaxSecvK – Rezolvare C++

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

## Enunț

Cerința
Se consideră un șir A de n numere întregi. Pentru fiecare subsecvență de lungimea k să se afișeze valoarea maximă.

Date de intrare
Fișierul de intrare maxsecvk.in conține pe prima linie două numere naturale nenule n și k, iar pe a doua linie n numere întregi separate prin spații.

Date de ieșire
Fișierul de ieșire maxsecvk.out va conține n–k+1 numere întregi ce reprezintă valoarea maximă a tuturor secvențelor de lungime k.

Restricții și precizări

1 ≤ n ≤ 100.000
1 ≤ k ≤ n
-1.000.000.000 ≤ Ai ≤ 1.000.000.000
prin secvență înțelegem elemente aflate pe poziții consecutive în șir

Exemplu:
maxsecvk.in

9 3
1 2 4 1 3 6 3 2 5
maxsecvk.out

4 4 4 6 6 6 5
Explicație
Se vor afișa 7 numere. 
Maximul secvenței 1 2 4 este 4
Maximul secvenței 2 4 1 este 4
Maximul secvenței 4 1 3 este 4
Maximul secvenței 1 3 6 este 6
Maximul secvenței 3 6 3 este 6
Maximul secvenței 6 3 2 este 6
Maximul secvenței 3 2 5 este 5

## Cod sursă C++

```cpp
# include <deque>
# include <fstream>
using namespace std;
ifstream f("maxsecvk.in");
ofstream g("maxsecvk.out");
deque <int > deq;
int n, k;
int A[100001];
int main()
{
    int i;
    f >> n >> k;
    for (i=1; i<=n; ++i)
        f >> A[i];
    for (i=1; i<=k; ++i)
    {
        while (!deq.empty() && A[deq.back()] <= A[i])
            deq.pop_back();
        deq.push_back(i);
    }
    for (  ; i<=n+1; ++i)
    {
        g << A[deq.front()] << " ";
        while (!deq.empty() && deq.front() <= i-k)
                deq.pop_front();
        while (!deq.empty() && A[deq.back()] <= A[i])
            deq.pop_back();
        deq.push_back(i);
    }
    return 0;
}
```

## Resurse

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