Fişierul intrare/ieşire:great.in, great.outSursăAlgoritmiada 2017, Runda 1
AutorMihai CalanceaAdăugată deklamathixMihai Calancea klamathix
Timp execuţie pe test0.5 secLimită de memorie20480 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Great

In Republica Federala Serbanistan alegerile prezidentiale se desfasoara dupa o metodologie deosebita.

- Exista doar doi candidati, iar fiecare persoana din Serbanistan va vota pentru exact unul dintre candidati.
- Serbanistanul este impartit in mai multe state, fiecare avand un numar de locuitori ( people[i] ) si o greutate electorala ( weight[i] ).
- Candidatul A castiga cel de al i-lea stat daca are strict mai multi votanti decat candidatul B in statul respectiv. In acest caz, greutatea totala a candidatului A creste cu exact weight[i].
- La final candidatul care are greutatea totala mai mare castiga alegerile si devine noul presedinte al Serbanistanului.

In mod oarecum contraintuitiv pentru o democratie pura cum este Serbanistanul, acest sistem permite unui candidat sa castige presedintia chiar daca acesta a adunat in total mai putine voturi decat adversarul sau. Sarcina voastra in aceasta problema este sa detectati aceasta posibilitate.

Serbanistanul este initial inexistent (dar totusi democratic). In fiecare an dintre urmatorii N componenta sa se schimba cu exact un stat: fie apare un stat nou, fie unul din cele existente se hotaraste sa paraseasca Serbanistanul. Este posibil ca la diferite momente de timp structura Serbanistanului sa cauzeze ambiguitati in procesul alegerilor: este posibil sa existe egalitate de voturi la nivelul unui stat, la nivelul greutatii totale sau la nivelul votului popular total. Din acest motiv ne vom limita la a studia doar situatiile clare. Spunem ca Serbanistanul se afla intr-o situatie clara doar daca au loc toate conditiile urmatoare:

- Numarul de locuitori al fiecarui stat este impar.
- Numarul total de locuitori ai Serbanistanului este impar
- Suma totala a greutatilor electorale este impara.

Vi se cere sa analizati situatia Serbanistanului dupa fiecare actualizare a componentei statale. Daca dupa o anumita actualizare Serbanistsanul nu se afla intr-o situatie clara, nu veti afisa nimic. Altfel, veti afisa "YES" daca este posibil ca un candidat sa castige alegerile avand mai putine voturi in total, respectiv "NO" daca acest lucru nu este posibil.

Date de intrare

Fişierul de intrare great.in va contine pe prima sa linie numarul N, reprezentand numarul de actualizari ale componentei Serbanistranului. Urmatoarele N linii vor contine cate trei numere tip people weight. Daca tip este egal cu 0, acesta codifica alaturarea unui nou stat cu people locuitori si greutate electorala weight. Daca tip este egal cu 1 acesta codifica eliminarea unui stat cu people locuitori si greutate electorala weight din cele existente. Se garanteaza ca un asemenea stat exista in componenta Serbanistanului la momentul respectiv.

Date de ieşire

În fişierul de ieşire great.out se vor afla mai multe linii, in numar egal cu numarul ocaziilor in care situatia Serbanistanului este clara, conform definitiei de mai sus. Fiecare linie va contine un raspuns din multimea {"YES", "NO"}.

Restricţii

  • 1 ≤ N ≤ 200.000
  • 1 ≤ people[i], weight[i] ≤ 109
  • Teste in valoare de 50% din punctaj au 1 ≤ N ≤ 1500.

Exemplu

great.ingreat.out
3
0 3 1
0 1 1
0 1 3
NO
YES

Explicaţie

Dupa alipirea primului stat, situatia este clara, dar nu este posibil ca un candidat sa castige alegerile fara a castiga si votul popular. Dupa alipirea celui de-al doilea stat situatia nu mai este clara deoarece numarul total de locuitori este acum par. Dupa alipirea celui de-al treilea stat, orice candidat care castiga acest stat (fiind votat de singurul sau locuitor) a castigat deja alegerile, dar poate pierde votul popular chiar cu 4 voturi la 1. 

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?