# PBinfo #4283 – LowMem1 – Rezolvare C++

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

## Enunț

Cerința
Se citește din fișierul lowmem1.in de pe prima linie un număr k, iar de pe a doua linie un șir de cel mult 1.000.000 numere întregi, de cel mult 9 cifre fiecare. Să se determine valoarea maximă S, care se poate obține prin însumarea a k numere consecutive și secvența de numere care formează această sumă maximă.

Date de intrare
Fișierul de intrare lowmem1.in conține pe prima linie numărul k, iar pe a doua linie numerele întregi cuprinse în intervalul (\({-10}^{9}\), \({10}^{9}\)).

Date de ieșire
Fișierul de ieșire lowmem1.out va conține pe prima linie numărul S, reprezentând suma celor k elemente aflate pe poziții consecutive, iar pe a doua linie aceste elemente din secvență.

Restricții și precizări

1 ≤ k ≤ 11000
k mai mic decât numărul de numere din fișierul de intrare
dacă avem mai multe secvențe de k elemente care formează suma maximă, se va afișa prima dintre ele

Exemplu:
lowmem1.in

5
15 3 -12 -7 8 22 -1 3 -14 33 -18 10
lowmem1.out

43
22 -1 3 -14 33
Explicație
În fișierul de intrare cele 5 numere de pe poziții consecutive care adunate dau suma maximă 43, sunt 22 -1 3 -14 33.

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
int n, k, i, x, dr, st, v[11005];
long long s, maxx = LLONG_MIN;
ifstream f("lowmem1.in");
ofstream g("lowmem1.out");
int main()
{
    f >> k;
    for(i = 0; i < k; i ++)
    {
        f >> v[i];
        s = s + v[i];
    }
    maxx = s;
    while(f >> x)
    {
        s = s + x - v[i % k];
        v[i % k] = x;
        if(s > maxx) maxx = s, dr = i;
        i ++;
    }
    st = dr - k + 1;
    g << maxx << "\n";
    f.close();
    ifstream f("lowmem1.in");
    f >> k;
    i = 0;
    while(f >> x)
    {
        if(i >= st && i <= dr) g << x << " ";
        i ++;
        if(i > dr) return 0;
    }
    return 0;
}
```

## Resurse

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