ConcursC++17

secvente

Se consideră un șir cu NN elemente numere întregi. Definim următoarele noțiuni:

  • secvență în șir = elemente situate pe poziții consecutive în șir
  • lungimea unei secvențe = numărul de elemente care o formează
  • suma unei secvențe = suma elementelor care o formează
  • secvența nebanală = secvența de lungime cel puțin egală cu 22
  • N-secvență = secvență a cărei sumă este divizibilă cu NN (secvența poate fi și banală)
  • N-secvență nebanală = secvență nebanală a cărei sumă este divizibilă cu NN.

Cerință

Scrieți un program care să citească numărul natural NN și apoi șirul de NN elemente. Programul determină:

  1. numărul de NN-secvențe nebanale, din șir;
  2. cea mai mare lungime a unei NN-secvențe din șir;
  3. cea mai mare sumă a unei NN-secvențe din șir.

Date de intrare

Fișierul de intrare secvente.in conține pe prima linie numere naturale CC și NN separate printr-un singur spațiu. CC reprezentând cerința care trebuie rezolvată (1,21, 2 sau 33).

Date de ieșire

Fișierul secvente.out va conține pe prima linie un număr natural reprezentând:

dacă C=1C = 1, numărul de N-secvențe nebanale din șir (răspunsul la cerința 11);
dacă C=2C = 2, cea mai mare lungime a unei N-secvențe din șir (răspunsul la cerința 22);
dacă C=3C = 3, cea mai mare sumă a unei N-secvențe din șir (răspunsul la cerința 33).

Restricții și precizări

  • 2≤N≤100 0002 \leq N \leq 100 \ 000
  • elementele șirului sunt numere întregi din interval închis [−109,109][-10^9, 10^9]
  • în șirul de numere dat există cel puțin o N-secvență a cărei sumă este un număr natural
  • numărul întreg negativ XX este divizibil cu numărul natural nenul NN dacă restul împărțirii modulului lui XX la NN este 00 (de exemplu, X=−30X=-30 este divizibil cu N=6N=6, iar X=−45X=-45 nu este divizibil cu N=6N=6)
  • Pentru pentru fiecare dintre cerințele 11 și 22 se acordă 3030p, iar pentru cerința 33 se acordă 4040p.

Exemplul 1

secvente.in

1 10
-9 -3 4 -10 -1 -16 18 18 -10 50

secvente.out

8

Explicație

Se rezolvă cerința 11. Șirul are N=10N=10 elemente întregi: −9,−3,4,−10,−1,−16,18,18,−10,50-9, -3, 4, -10, -1, -16, 18, 18, -10, 50.

Cele N-secvențe nebanale sunt ( −3,4-3, 4 , −10,−1-10, -1 ) , (−16,18,18-16, 18, 18), (−10,50-10, 50), (−16,18-16, 18 , 18,−1018, -10), (−16,18-16, 18 , 18,−10,5018, -10, 50), (−3,4,−10(-3, 4, -10 , −1,−16,18,18-1, -16, 18, 18), (−3,4,−10-3, 4, -10 , −1,−16,18-1, -16, 18 , 18,−1018, -10), (−3,4,−10-3, 4, -10 , −1,−16,18-1, -16, 18 , 18,−10,5018, -10, 50) .

Exemplul 2

secvente.in

2 10
-9 -3 4 -10 -1 -16 18 18 -10 50

secvente.out

9

Explicație

Se rezolvă cerința 22. Șirul are N=10 elemente întregi: −9,−3,4,−10-9, -3, 4, -10 , −1,−16,18-1, -16, 18 , 18,−10,5018, -10, 50.

Cea mai lungă dintre aceste secvențe este N-secvența (−3,4,−10,−1-3, 4,-10,-1 , −16,18,18-16,18,18 , −10,50-10,50). Lungimea acestei secvențe este 99.

secvente.in

3 10
-9 -3 4 -10 -1 -16 18 18 -10 50

secvente.out

60

Explicație

Se rezolvă cerința 33. Șirul are N=10 elemente întregi: −9,−3,4,−10-9, -3, 4, -10 , −1,−16,18-1, -16, 18 , 18,−10,5018, -10, 50.

Suma maximă a unei secvente este 6060 (suma N-secvenței: −16,18,18-16,18,18 , −10,50-10,50).

Sursă și autori

OSEPI 2021, clasele 8. Stelian Ciurea.

Enunț din Kilonova, sub licența CC-BY-NC-SA-4.0, conform politicii sursei. Adaptări de prezentare și tipografie. Exemplele, formulele și figurile originale sunt păstrate.

RÂNDUL TĂU

Trimite o soluție

Editor de cod

Setul original de teste și regulile de punctare sunt în curs de verificare. Trimiterea pentru evaluare va fi disponibilă după această verificare.

Se verifică autentificarea…

Un pas, apoi următorul.Înapoi sus ↑