PROBLEMA 9: SCHERZO
DEADLINE: Luni, 15 martie 1999
TIMP DE IMPLEMENTARE: Maxim o ora pentru un elev de a XII-a
DOMENIU: Programare dinamica
PUNCTAJ: 35 dexteri
O partitura muzicala este scrisa pe V voci, fiecare voce avand cate N note.
Spunem ca un solfegiu SE BRODESTE peste aceasta partitura daca:
1) Solfegiul are tot lungimea de N note si
2) Fiecare din notele solfegiului coincide cu nota de pe pozitia
corespunzatoare a partiturii, pe cel putin una dintre voci.
De exemplu, solfegiul
MI RE LA DO SI FA SOL LA
se brodeste partiturii pe 2 voci cu 6 note:
Vocea I: MI RE DO DO SI FA FA SI
Vocea II: SOL SI LA DO SOL MI SOL LA
Aceasta deoarece notele 1, 2, 5, 6 din solfegiu sunt cantate
conform vocii 1, iar notele 3, 7, 8 sunt cantate pe vocea a doua. Nota
a 4-a (DO) este cantata conform ambelor voci.
(ATENTIE! AUTORUL DETINE DREPTURI EXCLUSIVE ASUPRA SIMFONIEI "MIRELA"
OP. 20. COPIEREA, DIFUZAREA SI INTERPRETAREA IN PUBLIC SUNT STRICT
INTERZISE SI VOR FI PEDEPSITE PE CALE LEGALA)
Spunem ca un solfegiu de o lungime oarecare FALSEAZA in K locuri daca
este nevoie de cel putin K modificari asupra lui pentru a-l face sa se
brodeasca peste partitura. O modificare poate fi:
1) Stergerea unei note din solfegiu
2) Adaugarea unei note in solfegiu
3) Inlocuirea unei note in solfegiu
De exemplu, solfegiul
MI RE SOL DO SI FA SI
falseaza in doua locuri, pentru ca trebuie sa modificam nota SOL in LA
si sa inseram inca un FA intre SI si FA pentru a-l aduce la forma:
MI RE LA DO SI FA FA SI
care se brodeste peste partitura.
Dumneavoastra sunteti profesor la conservator si, la examen, puneti
studentii sa reproduca o partitura in prima auditie, dupa care le
puneti nota in functie de cat de fidela este reproducerea. Natural,
aveti nevoie de un program care sa compare solfegiul (reproducerea) cu
partitura si sa spuna daca solfegiul se brodeste sau in cate locuri
falseaza.
Observatie: In lumea prozaica a calculatoarelor, notele sunt
reprezentate prin numere naturale cuprinse intre 1 si 100.
DATELE DE INTRARE: Fisierul SOLFEGIU.IN contine urmatoarele date:
V N // Numarul de voci (1<=N<=100) si de note (1<=N<=100)
P11 P12 ... P1N // Notele primei voci ale partiturii
... // 1<=Pij<=100
PV1 PV2 ... PVN // Notele vocii V ale partiturii
M // Numarul de note ale solfegiului (1<=M<=100)
S1 S2 ... SM // Notele solfegiului, 1<=Si<=100
DATELE DE IESIRE: Pe ecran se va tipari unul din mesajele:
Solfegiul se brodeste peste partitura.
sau
Solfegiul falseaza in K locuri.
(unde K este numarul minim de locuri in care solfegiul falseaza).
EXEMPLU: SOLFEGIU.IN
2 8
3 2 1 1 7 4 4 7
5 7 6 1 5 3 5 6
7
3 2 5 1 7 4 7
Raspuns:
Solfegiul falseaza in 2 locuri.
TIMP DE RULARE: O secunda.
COMPLEXITATE RECOMANDATA: O(M*N*V).
|
|