Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

International

Olympiad in Informatics 2015


26th July - 2nd August 2015
Almaty, Kazakhstan

horses

Day 2

Language: ro-RO

Horses
Lui Mansur i place s creasc cai urmnd tradiia strmoilor si. El are acum ce mai mare herghelie
din Kazakhstan. Nu aa stteau lucrurile cu ani n urm. Cnd Mansur era doar un dzhigit (
cuvntul Kazakh pentru tnr ) el avea doar un singur cal. El visa s fac o grmad de bani i n cele
din urm s ajung un bai ( cuvntul kazakh pentru om foarte bogat).
S numerotm anii de la la
n ordine cronologic ( adic anul
este cel mai recent an
). Clima din fiecare an influena creterea hergheliei. Pentru fiecare an Mansur memoreaz un
coeficient de cretere ntreg i pozitiv
. Dac la nceputul anului aveai cai atunci la sfritul
acestuia aveai
cai n herghelie.
Caii puteau fi vndui numai la sfritul unui an. Pentru fiecare an , Mansur memoreaz un ntreg
pozitiv
: preul unui cal la sfritul anului . La sfritul fiecrui an era posibil s vinzi orici cai,
fiecare la acelasi pre
.
Mansur se ntreab care este cea mai mare sum de bani pe care ar putea s o obin dac alege cele
mai bune momente n care s vnd cai pe parcursul celor ani. Tu ai onoarea s fii invitaltul lui
Mansur n toi ( cuvntul kazakh pentru vacan ) i s rspunzi la ntrebarea lui.
Memoria lui Mansur se mbuntete seara, aa ca va face un ir de modificri. Fiecare
modificare va schimba fie una dintre valorile
, fie una dintre valorile
. Dup fiecare
modificare el te ntreab dinnou care e suma cea mai mare pe care o poate obine din vnzarea cailor.
Modificrile lui Manur sunt cumulative: fiecare rspuns trebuie s in cont de toate modificrile
precedente. Reinei c oricare dintre valorile
sau
ar putea fi modificat de mai multe ori.
Rspunsul lui Mansur poate fi un numr foarte mare. Pentru a evita lucrul cu numere mari se cere
doar restul modulo
al rspunsului.

Exemplu
S presupunem c

ani, cu urmtoarele informaii:


0 1 2
X 2 1 3
Y 3 4 1

Pentru valorile iniiale Mansur poate obine cel mai mult dac vinde ambii si cai la sfritul anului 1.
Procesul decurge dup cum urmeaz:
Iniial, Mansur are un cal.
Dup anul 0 el are

cai .
1 / 3

Dup anul 1 el are

cai .

El poate acum s vnd cei doi cai. Profitul total va fi


S presupunem acum c exist

modificri: Schimb valoarea lui

n .

Dup modificare avem:


0 1 2
X 2 1 3
Y 3 2 1
n acest caz, una dintre soluiile optime este s vinzi un cal dup anul 0 i apoi trei cai dup anul 2.
Procesul decurge dup cum urmeaz:
Iniial, Mansur are un cal.
Dup anul 0 el are

cai.

El poate s vnd unul dintre cai pentru


Dup anul 1 el are

cal.

Dup anul 2 el are

cai.

, i i mai rmne un cal.

El poate acum s vnd cei trei cai pentru

. Profitul total va fi

Cerin
Se dau , , , i lista de modificri. nainte de prima modificare i dup fiecare modificare,
calculeaz suma maxim pe care o poate obine Mansur pe caii si, modulo
.
Trebuie s implementezi funciile init, updateX i updateY.
init(N, X, Y) Grader-ul va apela prima aceast funcie, exact o dat.
N: Numrul de ani.
X: un ir de lungime
anul .

. Pentru

d coeficientul de cretere pentru

Y: un ir de lungime

. Pentru

d preul unui cal dup anul .

Remarcai c att X ct i Y specific valorile iniiale date de Mansur ( nainte de orice


modificare ).
Dup ce apelul init se ncheie, irurile X i Y rmn valabile, i poi modifica coninutul
lor dup cum doreti.
Aceast funcie trebuie s returneze suma maxim pe care o poate obine Mansur pe caii
si pentru aceste valori iniiale ale lui i , modulo
.
updateX(pos, val)
pos: un ntreg din intervalul

.
2 / 3

val: noua valoare a lui

pos .

Aceast funcie trebuie s returneze suma maxim pe care o poate obine Mansur dup
aceast modificare, modulo
.
updateY(pos, val)
pos: un ntreg din intervalul
val: noua valoare a lui

pos .

Aceast funcie trebuie s returneze suma maxim pe care o poate obine Mansur dup
aceast modificare, modulo
.
Se asigur c att valorile iniiale ct i cele modificate pentru
i
sunt ntre i
inclusiv.
Dup init, grader-ul va apela updateX i updateY de cteva ori. Numrul total de apeluri ale
funciilor updateX i updateY va fi .

Subprobleme
Subproblema puncte
1

17

17

20

4
5

23
23

Precizri suplimentare
,
none
i
pentru init i
apelurile updateX
none
none

Grader-ul de pe calculatorul tu
Grader-ul de pe calculatorul tu citete date de intrare din fiierul horses.in n urmtorul format:
linia 1: N
linia 2: X[0] X[N - 1]
linia 3: Y[0] Y[N - 1]
linia 4: M
liniile 5, , M + 4: trei numere type pos val (type=1 pentru updateX i type=2 pentru
updateY).
Grader-ul de pe calculatorul tu afieaz valoarea returnat de apelul init urmat de valorile
returnate de toate apelurile updateX i updateY.

3 / 3

You might also like