pif

Time limit: 0.2s Memory limit: 64MB Input: pif.in Output: pif.outPoints by default: 10p

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 kk fapte bune prin care să ajute oamenii. Vârstnicii și tinerii își îndeplinesc în mod diferit această sarcină. Vârstnicii au nevoie de zv\text{zv} zile pentru a introduce în joc o altă persoană, iar tinerii au nevoie de zt\text{zt} zile. Astfel dacă un vârstnic, respectiv un tânăr, intră în joc în ziua ii, el va introduce la rândul lui în joc prima persoană în ziua i+zvi+\text{zv}, respectiv în ziua i+zti+\text{zt} tânărul, a doua persoană în ziua i+2zvi+2*\text{zv}, respectiv în ziua i+2zti+2*\text{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(k+1)/2 tineri și maximum (k+1)/2(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(k+1)/2 persoane de același tip.

Cerință

Care este numărul fb\text{fb} de fapte bune care mai sunt de realizat, după trecerea a nn 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 nn, pe a doua linie numărul kk și pe a treia linie numerele zv\text{zv} și zt\text{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\text{fb}, cu semnificația din enunț, la 12345671234567.

Restricții și precizări

  • 1n1061 \leq n \leq 10^6;
  • 1k,zt,zvn1 \leq k, \text{zt}, \text{zv} \leq n;
  • Pentru teste în valoare de 3030 de puncte fb106\text{fb} \leq 10^6;
  • Pentru teste în valoare de 3030 de puncte zv=zt=1\text{zv} = \text{zt} = 1;
  • Pentru teste în valoare de 2020 de puncte zv=zt1\text{zv} = \text{zt} \neq 1;
  • Pentru teste în valoare de 7070 de puncte kn106k \cdot n \leq 10^6;

Exemplu

pif.in

4
2
1 2

pif.out

7

Explicație

n=4n=4, k=2k=2, zv=1\text{zv}=1, zt=2\text{zt}=2.

Avem 1616 moduri posibile în care se pot alege persoanele vârstnice și tinere.

Dintre ele, doar 55 respectă condiția ca numărul vârstnicilor și al tinerilor să fie maxim 1. Dintre cele 55 doar două obțin un număr maxim de fapte bune așteptate.

Notăm cu TT pe Trevor, cu VnV_n persoanele vârstnice și cu TnT_n persoanele tinere. Unul dintre cele 22 cazuri cu număr maxim de fapte bune este următorul:

Ziua Persoane datoare să ajute Persoane ajutate Explicație
00 TT - TT începe jocul (intră în joc)
11 TT - TT nu ajută pe nimeni (nu au trecut 22 zile)
22 TT V1V_1 TT ajută V1V_1
33 TT - TT nu ajută pe nimeni (nu au trecut 44 zile)
33 V1V_1 V2V_2 V1V_1 ajută V2V_2
44 TT T1T_1 TT ajută T1T_1
44 V1V_1 T2T_2 V1V_1 ajută T2T_2
44 V2V_2 V3V_3 V2V_2 ajută V3V_3

În zilele următoare:

  • V2V_2 ar trebui să mai ajute încă un tânăr.
  • V3V_3 ar trebui să mai ajute încă două persoane, un tânăr și un vârstnic.
  • T1T_1 ar trebui să mai ajute încă două persoane, un tânăr și un vârstnic.
  • T2T_2 ar trebui să mai ajute încă două persoane, un tânăr și un vârstnic.

Deci au mai rămas 77 fapte bune de realizat.

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

Ziua Persoane datoare să ajute Persoane ajutate Explicație
00 TT - TT începe jocul (intră în joc)
11 TT - TT nu ajută pe nimeni (nu au trecut 22 zile)
22 TT V1V_1 TT ajută V1V_1
33 TT - TT nu ajută pe nimeni (nu au trecut 44 zile)
33 V1V_1 V2V_2 V1V_1 ajută V2V_2
44 TT T1T_1 TT ajută T1T_1
44 V1V_1 T2T_2 V1V_1 ajută T2T_2
44 V2V_2 T3T_3 V2V_2 ajută T3T_3

În zilele următoare:

  • V2V_2 ar trebui să mai ajute încă un tânăr.
  • T1T_1 ar trebui să mai ajute încă două persoane, un tânăr și un vârstnic.
  • T2T_2 ar trebui să mai ajute încă două persoane, un tânăr și un vârstnic.
  • T3T_3 ar trebui să mai ajute încă două persoane, un tânăr și un vârstnic.

În total au mai rămas 77 fapte bune de realizat.

Log in or sign up to be able to send submissions!