Pe planeta Utopia urmează să se organizeze alegeri. Fiecare dintre cele partide va trebui să-și aleagă un singur candidat dintre politicieni și bineînțeles un politician poate candida pentru cel mult un partid.
Pentru fiecare partid cunoaștem intervalele disjuncte de timp când au fost la guvernare, iar pentru fiecare politician cunoaștem intervalele de timp în care a colaborat cu diverse asociații non-profit la care a făcut voluntariat. Se poate întâmpla ca un politician să facă voluntariat simultan în mai locuri.
Preferința unui partid pentru un politician se obține prin însumarea timpului total în care politicianul a făcut voluntariat, în cel puțin un loc, în perioadele în care partidul a fost la guvernare. Cu cât acest număr este mai mare, cu atât partidul preferă mai mult politicianul .
Preferința unui politician pentru un partid se obține în felul următor:
- Pentru fiecare partid calculăm numărul de puncte de putere al partidului ca fiind numărul minim de intervale de voluntariat ale tuturor politicienilor cu care se pot acoperi toate intervalele în care partidul s-a aflat la guvernare, sau 0 dacă acest lucru este imposibil.
- Notăm cu primul moment de timp și cu ultimul moment de timp când politicianul a făcut voluntariat. Definim ca fiind numărul de perioade din intervalul când politicianul nu a făcut voluntariat.
- Pentru un partid și politician , definim preferința politicianului pentru partidul ca fiind numărul de moduri de a distribui cele puncte de putere ale partidului în cele intervale în care nu a făcut voluntariat (modulo ). Fiecărui interval i se poate distribui un număr natural de puncte, eventual . Dacă cel puțin unul dintre și preferința este . Cu cât acest număr este mai mare, cu atât politicianul preferă partidul mai mult.
Fie candidatul ales de partidul pentru alegeri (). Alegerile se consideră echilibrate dacă nu există două partide și () unde partidul preferă politicianul mai mult decât pe politicianul , iar politicianul preferă partidul mai mult decât partidul .
Cerințe
Sunt trei cerințe, iar cerința de rezolvat este dată de .
- : Dându-se partidul , determinați preferințele sale pentru fiecare dintre cei politicieni.
- : Dându-se politicianul , determinați preferințele sale pentru fiecare dintre cele partide.
- : Determinați suma tuturor preferințelor partidelor (modulo ), suma tuturor preferințelor politicienilor (modulo ) și o listă de candidați, în așa fel încât alegerile să fie echilibrate, dacă acest lucru este posibil.
Date de intrare
Pe prima linie se află , numărul cerinței, urmat de valoarea pentru cerința sau de valoarea pentru cerința .
Pe a doua linie se află , numărul partidelor. Urmează în ordine descrierea intervalelor de timp când partidele au fost la guvernare. O descriere de acest fel începe cu valoarea , reprezentând numărul intervalelor, urmată de linii, care conțin câte două numere întregi și , începutul și sfârșitul intervalului.
Pe următorul rând se află , numărul politicienilor. Descrierea lor are același format ca în cazul partidelor.
Date de ieșire
- : Se vor afișa linii. Linia reprezintă preferințele partidului pentru politicianul .
- : Se vor afișa linii. Linia reprezintă preferințele politicianului pentru partidul .
- : Pe prima linie se va afișa suma tuturor preferințelor partidelor (modulo ). Pe a doua linie se va afișa suma tuturor preferințelor politicienilor (modulo ). Dacă nu se pot organiza alegeri echilibrate, pe următoarea linie se va afișa
-1
. În caz contrar se vor afișa încă linii. Cea de-a -a linie dintre acestea reprezintă candidatul trimis la alegeri de partidul . Dacă există mai multe soluții, se poate afișa oricare dintre ele.
Restricții și precizări
- ;
- ;
- ;
- ;
- ;
- La cerința punctajul aferent fiecărui test se acordă astfel: dacă prima linie a fișierului de ieșire este corectă, dacă a doua linie a fișierului de ieșire este corectă și dacă restul liniilor din fișier sunt corecte.
- Intervalele în care un anumit partid a fost la guvernare sunt disjuncte.
# | Scor | Restricții |
---|---|---|
1 | 6 | |
2 | 13 | |
3 | 9 | și numărul total de intervale din fișierul de intrare nu depășește |
4 | 15 | |
5 | 57 |
Exemplul 1
candidati.in
1 2
2
1
1 10
2
8 10
2 6
3
1
1 10
3
9 10
1 2
5 6
2
6 8
7 7
candidati.out
8
5
2
Explicație
Partidul 2 a fost la guvernare în perioadele respectiv .
Primul politician a făcut voluntariat în perioada , unitățile de timp comune cu partidul fiind: , în total unități de timp.
Al doilea politician a făcut voluntariat în perioadele , și , unitățile de timp comune cu partidul fiind: , în total unități de timp.
Al treilea politician a făcut voluntariat în perioada și simultan în perioada unitățile de timp comune cu partidul fiind și , în total unități de timp.
Exemplul 2
candidati.in
2 2
2
1
1 10
2
8 10
2 6
3
2
2 5
8 9
3
9 10
1 2
5 7
2
6 8
7 7
candidati.out
7
5
Explicație
Politicianul a făcut voluntariat în perioadele , , respectiv , deci a început să facă voluntariat pentru prima oară în momentul și a încetat să facă voluntariat ultima oară în momentul . În perioada au fost perioade în care n-a luat parte la niciun voluntariat, respectiv și .
Partidul a fost la guvernare în perioada , perioadă ce se poate acoperi cu minim intervale dintre cele asociate politicienilor: , , , , și . În cele perioade se pot distribui puncte de putere ale partidului în moduri: în prima perioadă se pot distribui , sau puncte, iar în a doua perioadă restul.
Partidul a fost la guvernare în perioadele și , perioade ce se pot acoperi cu minim intervale dintre cele asociate politicienilor: , , și . În cele perioade se pot distribui cele puncte în moduri.
Exemplul 3
candidati.in
3
2
1
1 10
2
8 10
2 6
3
2
2 5
8 9
3
9 10
1 2
5 6
2
6 8
7 7
candidati.out
28
16
2
1
Explicație
Suma tuturor preferințelor partidelor este .
Suma tuturor preferințelor politicienilor este .
Pentru partidul candidează politicianul , iar pentru partidul candidează politicianul , lista de candidați fiind echilibrată. Dacă pentru partidul ar fi candidat politicianul și pentru partidul ar fi candidat politicianul , lista candidaților n-ar mai fi fost echilibrată, pentru că politicianul preferă mai mult partidul (preferința ) decât partidul (preferința ) și partidul preferă mai mult politicianul (preferința ) decât politicianul (preferința ).