Fişierul intrare/ieşire:partitura.in, partitura.outSursăOlimpiada pe scoala 2014
AutorCristian FrancuAdăugată defrancuCristian Francu francu
Timp execuţie pe test0.1 secLimită de memorie2048 kbytes
Scorul tăuN/ADificultatenormalnormalnormalnormalnormal

Vezi solutiile trimise

Partitura (clasa a 5-a)

Amadeus este un mic geniu muzical. El se uită pe o partitură cu note şi îşi dă seama instantaneu de proprietăţile ei. Tatăl său este, însă, un om foarte strict şi vrea să îl verifice, drept care vă roagă pe voi să îl ajutaţi.

O partitură o reprezintă ca pe un şir de numere, unde notele sînt numere diferite de unu, iar pauzele sînt note egale cu unu. De exemplu partitura 2 3 5 1 5 3 2 8 1 2 are 8 note separate de două pauze.

Proprietăţile pe care le află Amadeus sînt:

  • Înălţimea partiturii, care este suma tuturor notelor. De exemplu, în partitura anterioară, suma notelor este 30 (pauzele nu se adună).
  • Fuga, care reprezintă diferenţa dintre suma creşterilor şi a descreşterilor în valoare absolută. De pildă, în exemplul nostru vom avea două creşteri şi o descreştere:
    • 2 3 5 are creşterea (3-2) + (5-3) = 3
    • 2 8 are creşterea (8-2) = 6
    • 5 3 2 cu descreşterea (5-3) + (3-2) = 3

      Deoarece suma creşterilor este mai mare decît suma descreşterilor fuga partiturii este (6+3) - 3 = 6.

  • Gama partiturii este dată de numerele de acorduri majore şi minore. Un acord major este o secvenţă de trei note la rînd (A B C) cu proprietăţile că A + 3 = B şi B + 2 = C. Similar, un acord minor este o secvenţă de trei note la rînd (A B C) cu proprietăţile că A + 2 = B şi B + 3 = C. De exemplu, în partitura 4 7 9 12 9 5 1 4 6 2 1 2 vom avea un acord major, (4 7 9) şi un acord minor, (7 9 12).

Cerinţă

Dată o partitură determinaţi înălţimea, fuga şi gama.

Date de intrare

Fişierul de intrare partitura.in va conţine pe prima linie N, numărul de numere care descriu partitura (note şi pauze). Pe a doua linie va conţine N numere cu semnificaţia de mai sus (note şi pauze).

Date de ieşire

În fişierul de ieşire partitura.out se va scrie răspunsul la fiecare cerinţă, pe linii separate. Astfel, pe prima linie se va scrie înălţimea, pe a doua linie fuga şi pe a treia linie două numere: numărul de acorduri majore şi numărul de acorduri minore, separate prin spaţiu.

Restricţii

  • 1 ≤ N ≤ 10000
  • Notele sînt valori întregi între 2 şi 100
  • Partitura conţine cel puţin o notă
  • Pauzele sînt reprezentate prin numere 1
  • Se acordă punctaje parţiale astfel: 40% primul punct, 20% punctul doi şi 40% punctul trei
  • Pentru punctaje parţiale trebuie să afişaţi valori pe fiecare linie. De exemplu, dacă răspundeţi numai la primul şi ultimul punct trebuie să afişaţi o valoare oarecare pe linia a doua, de exemplu 0.

Exemple

partitura.inpartitura.outExplicaţie
12
4 7 9 12 9 5 1 4 6 2 1 2
60
1
1 1
Suma notelor este 60 (pauzele nu se adună).
 
Vom avea trei intervale de creştere şi două de descreştere:
4 7 9 12 are creşterea (7-4) + (9-7) + (12-9) = 8
4 6 are creşterea (6-4) = 2
12 9 5 cu descreşterea (12-9) + (9-5) = 7
6 2 cu descreşterea (6-2) = 4
Fuga partiturii este suma descreşterilor minus suma creşterilor:
(7+4) - (8+2) = 1
 
Avem un acord major, (4 7 9) şi un acord minor, (7 9 12)
deci vom afişa 1 1
15
2 5 7 10 7 3 1 3 5 2 1 1 8 10 13
75
5
1 2
Suma notelor este 75 (pauzele nu se adună).
 
Vom avea trei intervale de creştere şi două de descreştere:
2 5 7 10 are creşterea (5-2) + (7-5) + (10-7) = 8
3 5 are creşterea (5-3) = 2
8 10 13 are creşterea (10-8) + (13-10) = 5
10 7 3 cu descreşterea (10-7) + (7-3) = 7
5 2 cu descreşterea (5-2) = 3
Fuga partiturii este suma creşterilor minus suma descreşterilor:
(8+2+5) - (7+3) = 5
 
Avem un acord major, (2 5 7), precum şi două acorduri minore,
(5 7 10) şi (8 10 13) deci vom afişa 1 2
Trebuie sa te autentifici pentru a trimite solutii. Click aici