Fişierul intrare/ieşire:pif.in, pif.outSursăOJI 2019, clasa a 10-a
AutorMarcel DraganAdăugată detamionvTamio Vesa Nakajima tamionv
Timp execuţie pe test1 secLimită de memorie256000 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Pif

După ce a primit de la Simonet, profesorul său de studii sociale, tema pentru proiect, tânărului Trevor i-a venit ideea jocului ”Pay it forward”. Pentru cei care nu ştiu acest joc, el constă în ajutarea de către Trevor a oamenilor aflaţi la ananghie. Aceştia la rândul lor vor ajuta alţi oameni şi aşa mai departe.
Fiecare participant (inclusiv Trevor) trebuie să realizeze câte k fapte bune prin care să ajute oamenii. Vârstnicii şi tinerii îşi îndeplinesc în mod diferit această sarcină. Vârstnicii au nevoie de zv zile pentru a introduce în joc o altă persoană, iar tinerii au nevoie de zt zile. Astfel dacă un vârstnic, respectiv un tânăr, intră în joc în ziua i, el va introduce la rândul lui în joc prima persoană în ziua i+zv, respectiv în ziua i+zt tânărul, a doua persoană în ziua i+2*zv, respectiv în ziua i+2*zt tânărul şi aşa mai departe. Astfel numărul de persoane care participă la joc poate fi diferit în funcţie de cum sunt alese persoanele vârstnice şi cele tinere. Trevor doreşte ca în joc să fie realizate în total cât mai multe fapte bune, dar fiecare participant să aducă în joc maximum (k+1)/2 tineri şi maximum (k+1)/2 vârstnici. Participanţii pot aduce mai puţine persoane de un anumit tip, dar nu au voie să depăşească numărul de (k+1)/2 persoane de acelaşi tip.

Cerinţe

Care este numărul fb de fapte bune care mai sunt de realizat, după trecerea a n zile, de către persoanele intrate deja în joc, astfel încât numărul total de fapte bune aşteptate (şi cele realizate şi cele nerealizate) să fie maxim?\

Date de intrare

Fişierul de intrare pif.in conţine pe prima linie numărul natural n, pe a doua linie numărul k şi pe a treia linie numerele zv şi zt separate printr-un spaţiu.

Date de ieşire

În fişierul de ieşire pif.out se va scrie restul împărţirii lui fb, cu semnificaţia din enunţ, la 1234567 (fb modulo 1234567).

Restricţii

  • 1 ≤ n ≤ 106
  • 1 ≤ k, zt, zv ≤ n
  • Pentru teste în valoare de 30 de puncte fb ≤ 106
  • Pentru teste în valoare de 30 de puncte zv = zt = 1
  • Pentru teste în valoare de 20 de puncte zv = zt ≠ 1
  • Pentru teste în valoare de 70 de puncte k*n ≤ 106
  • 10 puncte sunt din officiu; ele coincid unor teste egale cu primul exemplu.

Exemplu

pif.in
pif.out
4
2
1 2
7

Explicaţie

n=4, k=2, zv=1, zt=2
Avem 16 moduri posibile în care se pot alege persoanele vârstnice şi tinere.
Dintre ele doar 5 respectă condiţia ca numărul vârstnicilor şi al tinerilor să fie maxim 1. Dintre cele 5 doar două obţin un număr maxim de fapte bune aşteptate.
Notăm cu T pe Trevor, cu Vn persoanele vârstnice şi cu Tn persoanele tinere.
Unul dintre cele 2 cazuri cu număr maxim de fapte bune este următorul:

ZiuaPersoane datoare să ajutePersoane ajutateExplicaţie
0T-T începe jocul (intră în joc)
1T-T nu ajută pe nimeni (nu au trecut 2 zile)
2TV1T ajută V1
3T-T nu ajută pe nimeni (nu au trecut 4 zile)
3V1V2V1 ajută V2
4TT1T ajută T1
4V1T2V1 ajută T2
4V2V3V2 ajută V3

În zilele următoare:
V2 ar trebui să mai ajute încă un tânăr.
V3 ar trebui să mai ajute încă două persoane, un tânăr şi un vârstnic.
T1 ar trebui să mai ajute încă două persoane, un tânăr şi un vârstnic.
T2 ar trebui să mai ajute încă două persoane, un tânăr şi un vârstnic.
Deci au mai rămas 7 fapte bune de realizat.

Celălalt caz cu număr maxim de fapte bune este următorul:

ZiuaPersoane datoare să ajutePersoane ajutateExplicaţie
0T-T începe jocul (intră în joc)
1T-T nu ajută pe nimeni (nu au trecut 2 zile)
2TV1T ajută V1
3T-T nu ajută pe nimeni (nu au trecut 4 zile)
3V1V2V1 ajută V2
4TT1T ajută T1
4V1T2V1 ajută T2
4V2T3V2 ajută T3

În zilele următoare:
V2 ar trebui să mai ajute încă un tânăr.
T1 ar trebui să mai ajute încă două persoane, un tânăr şi un vârstnic.
T2 ar trebui să mai ajute încă două persoane, un tânăr şi un vârstnic.
T3 ar trebui să mai ajute încă două persoane, un tânăr şi un vârstnic.
În total au mai rămas 7 fapte bune de realizat.

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?