Pagini recente »
Diferențe pentru problema/ecuatie3 între reviziile 2 și 24
|
Clasament cex_11_12_2022
|
Diferențe pentru problema/partitura între reviziile 59 și 27
Nu există diferențe între titluri.
Diferențe între conținut:
== include(page="template/taskheader" task_id="partitura") ==
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.
Amadeus este un mic geniu muzical. El se uită pe o partitură cu note și își dă seama instantaneu de *înălțimea* partiturii, de *fugă* și *gamă*. Tatăl său este, însă, un om foarte strict și vrea să il 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 %{color:red}1% 5 3 2 8 %{color:red}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 %{color:red}1% 4 6 2 %{color:red}1% 2* vom avea un acord major, (4 7 9) și un acord minor, (7 9 12).
Dar înainte de aceasta să definim termenii muzicali:
* *Partitura* este un șir de note și pauze. Notele sînt numere naturale nenule, iar pauzele sînt reprezentate cu numărul zero. De exemplu partitura *2 5 7 10 7 3 0 3 5 2 0 0 8 10 13* are 12 note separate de pauze.
* *Înălțimea* partiturii este suma tuturor notelor. De exemplu, în partitura anterioară, suma notelor este 75.
* *Fuga* se calculează astfel: pornind de la prima notă, cîtă vreme notele cresc, vom aduna diferențele între note consecutive în secvență, obținînd un interval de creștere C[~1~]. Apoi partitura descrește și vom considera iar diferențele între note consecutive în secvență obținînd un interval de descreștere D[~1~]. Intervalul de fugă este diferența în valoare absolută dintre suma intervalelor de creștere și a celor de descreștere: I = abs( [C[~1~] + C[~2~] + ... + C[~k~]] - [D[~1~] + D[~2~] + ... + D[~m~]] ). Pe exemplul nostru 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
* *Gama* partiturii se definește astfel: 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. În exemplul nostru vom avea un acord major, (2 5 7), precum și două acorduri minore, (5 7 10) și (8 10 13).
h2. Cerință
Dată o partitură determinați *înălțimea*, *fuga* și *gama*.
h2. 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.
Î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 *fuga* și pe a treia două numere: numărul de acorduri majore și numărul de acorduri minore, separate prin spațiu.
h2. Restricții
* $1 ≤ N ≤ 10000$
* Notele sînt valori întregi între $2$ și $100$
* Notele sînt valori întregi între $1$ și $250$
* 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.
* Pauzele sînt reprezentate prin numere $0$
h2. Exemple
h2. Exemplu
table(example).
|_. partitura.in |_. partitura.out |_. Explicaț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
|
|_. partitura.in |_. partitura.out |
| 15
2 5 7 10 7 3 1 3 5 2 1 1 8 10 13
2 5 7 10 7 3 0 3 5 2 0 0 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
|
|
== include(page="template/taskfooter" task_id="partitura") ==
Nu există diferențe între securitate.