Pregătire cu un profesor

Glisează →

Subiect și barem

PDF

Sursa: FMI UniBuc – MateInfoUB 2021

Concurs de pregătire · Informatică · 2021

Facultatea de Matematică și Informatică · UniBuc

Înapoi la arhivă

Despre acest subiect

primăvară · Etapa a II-a

Sursa documentelor: FMI UniBuc – MateInfoUB 2021. Verifică răspunsurile cu baremul după ce rezolvi subiectul.

Subiectul și baremul în format text

Text extras automat din documentul original. Pentru formule, tabele, imagini și așezarea răspunsurilor, verifică întotdeauna PDF-ul.

Subiect · 6 pagini

Subiect · pagina 1

Problema Sort
Fis, ier de intrare: sort.in
Fis, ier de ies, ire: sort.out
Fie A un s, ir de N numere naturale. Construit, i un s, ir B de N numere naturale care respect˘a urm˘atoarele
propriet˘at, i:
• Pentru tot, i 1 ≤ i ≤ N − 1, B[i] ≤ B[i + 1].
• Pentru tot, i 1 ≤ i ≤ N , B[i] poate fi obt, inut din A[i] printr-un num˘ar de permut˘ari circulare ale
cifrelor lui A[i]. Acest num˘ar poate fi 0, ˆın acest caz B[i] = A[i].
Operat, ia de permutare circular˘a mut˘a toate cifrele, ˆın afar˘a de prima, cu o pozit¸ie spre stˆanga ¸si aduce
prima cifr˘a pe ultima pozit¸ie. De exemplu, din num˘arul 12345 putem obt, ine, printre altele, numerele
34512 s, i 51234 folosind permut˘ari circulare, dar nu putem obt, ine num˘arul 14325.
Se garanteaz˘a c˘a pentru tot, i 1 ≤ i ≤ N , A[i] nu cont, ine cifra 0.
Date de intrare
Prima linie va cont, ine num˘arul N . A doua linie va cont, ine s, irul A, constˆand din N numere naturale
separate prin cˆate un spat, iu.
Date de ies, ire
Dac˘a nu exist˘a niciun s, ir B care respect˘a propriet˘at, ile din enunt, , afis, at, i cuvˆantul N U pe prima linie.
Altfel, afis, at, i cuvˆantul DA pe prima linie. Pe a doua linie afis, at, i orice s, ir B care respect˘a propriet˘at, ile
din enunt, .
Subtask-uri
# Punctaj Restrict, ii
1 21 N = 2
2 22 1 ≤ N ≤ 6
3 57 1 ≤ N ≤ 10 000
Pentru toate subtask-urile, 1 ≤ A[i] ≤ 108.
Trebuie s˘a rezolvat, i corect toate testele din cadrul unui subtask pentru a primi punctajul aferent acestuia.
Exemple
sort.in sort.out
3
2435 2134 1135
DA
2435 3421 3511
3
511 765 4
NU
Explicat, ii
ˆIn al doilea exemplu, B[2] poate fi 765, 657 sau 576, dar niciuna din aceste variante nu este mai mic˘a sau
egal˘a cu 4.
1

Subiect · pagina 2

Problema Kscale
Intrare: kscale.in
Ies, ire: kscale.out
Definim funct, ia scale(A, k1, k2) care primes, te ca argumente o matrice binar˘a A, dou˘a numere naturale
nenule k1 s, i k2 s, i ˆıntoarce o matrice binar˘a ˆın care fiecare celul˘a din A a fost ˆınlocuit˘a cu o submatrice
de dimensiune k1 × k2 de aceeas, i valoare cu cea original˘a.
De exemplu, dac˘a:
A = 1 0
0 1
scale(A, 2, 3) =
1 1 1 0 0 0
1 1 1 0 0 0
0 0 0 1 1 1
0 0 0 1 1 1
Fie B o matrice de dimensiune N ×M . Voi trebuie s˘a construit, i o matrice A de arie minim˘a, pentru care
exist˘a k1 s, i k2 astfel ˆıncˆat scale(A, k1, k2) = B. Orice matrice valid˘a A de arie minim˘a va fi acceptat˘a.
Date de intrare
Fis, ierul de intrare kscale.in cont, ine pe prima linie dou˘a numere naturale n si m reprezentˆand num˘arul
de linii, respectiv coloane ale matricei B. Urm˘atoarele n linii cont, in cˆate m caractere de tip 0 sau 1.
Date de ies, ire
Fi¸sierul de ie¸sire kscale.out va cont, ine pe prima linie dou˘a numere naturale p s, i t reprezentˆand num˘arul
de linii, respectiv de coloane ale matricei A. Pe urm˘atoarele p linii se va afis, a matricea A ˆın format similar
cu cel din fis, ierul de intrare.
# Punctaj Restrict, ii
1 21 puncte N = 1; 1 ≤ M ≤ 100
2 18 puncte 1 ≤ N, M ≤ 100 s, i se garanteaz˘a c˘a exist˘a solut, ie cu k1 = k2.
3 49 puncte 1 ≤ N, M ≤ 100
3 12 puncte 1 ≤ N, M ≤ 1 000
Anumite teste din interiorul unui subtask pot fi grupate, dar nu neaparat toate.
Exemple
kscale.in kscale.out
1 10
0000001100
1 5
00010
4 6
111000
111000
000111
000111
2 2
10
01
2

Subiect · pagina 3

Problema Secretariat
Fis, ier de intrare: secretariat.in
Fis, ier de ies, ire: secretariat.out
La Secretariat exist˘a N ghis, ee, numerotate de la 1 la N . Un num˘ar de persoane a format deja N cozi,
cˆate una la fiecare ghis, eu.
Fiecare persoan˘a are o singur˘a problem˘a de rezolvat.Exist˘a K tipuri de probleme, numerotate de la 1 la
K, unde K ≤ N . Exist˘a cel put, in cˆate o persoan˘a cu fiecare problem˘a dintre cele K.
Personalul Secretariatului ar aprecia dac˘a fiecare coad˘a ar cont, ine persoane cu un singur tip de problem˘a.
Pentru a realiza acest lucru, poate fi nevoie s˘a rearanj˘am cozile. Pentru a reraranja cozile, se poate face
un singur tip de operat, ie:
Operat, ia (i, j) ia prima persoan˘a din coada de la ghis, eul i s, i o plaseaz˘a ˆın spatele cozii de la ghis, eul j.
Este permis (des, i trist) ca i = j.
Dorim s˘a efectu˘am un num˘ar minim de operat, ii pentru a satisface proprietatea cerut˘a. Din fericire,
asocierea ghis, eu-problem˘a nu este fixat˘a ˆın acest moment s, i poate fi decis˘a de noi pentru a minimiza
num˘arul de operat, ii.
Date de intrare
Prima linie va cont, ine numerele N s, i K, separate printr-un spat, iu.
Cont, inutul urm˘atoarelor N linii va fi urm˘atorul: linia i va ˆıncepe cu un num˘ar natural Ni reprezentˆand
num˘arul de persoane din coada de la ghis, eul i, urmat de Ni numere ˆıntre 1 s, i K, separate prin cˆate un
spat, iu, reprezentˆand tipul problemelor avute de persoanele aflate la coad˘a, ˆın ordine dinspre fat, a cozii
ˆınspre spatele ei.
Date de ies, ire
Prima linie va cont, ine o singur˘a valoare, ANS reprezent˘and num˘arul minim de operat, ii cerut de problem˘a.
Urm˘atoarele ANS linii vor fi de forma i j (unde i s, i j sunt separate de un spat, iu) reprezentˆand faptul
c˘a prima persoan˘a din coada de la ghis, eul i merge s, i se as, eaz˘a ˆın spatele cozii de la ghis, eul j.
Subtask-uri
# Punctaj Restrict, ii
1 32 N = K = 2
2 25 1 ≤ N ≤ 1 000 s, i K = N
3 43 1 ≤ K ≤ N ≤ 1 000
Pentru toate testele, pentru tot, i 1 ≤ i ≤ N , se respect˘a 1 ≤ Ni ≤ 2 000, iar totalul de oameni aflat, i la
coad˘a este cel mult 500 000.
Trebuie s˘a rezolvat, i corect toate testele din cadrul unui subtask pentru a primi punctajul aferent acestuia.
Exemple
secretariat.in secretariat.out
4 3
4 2 2 1 1
3 3 3 3
4 1 2 1 2
1 1
5
3 4
3 3
1 3
3 1
1 3
3

Subiect · pagina 4

Exemplul descrie urm˘atoarea situat, ie:
Ghis, eul 1: 2 2 1 1
Ghis, eul 2: 3 3 3
Ghis, eul 3: 1 2 1 2
Ghis, eul 4: 1
Se poate ar˘ata c˘a nu exist˘a solut, ie cu mai put, in de 5 operat, ii. Dup˘a cele 5 operat, ii descrise ˆın fis, ierul de
ies, ire, cozile vor ar˘ata astfel:
Ghis, eul 1: 1 1 1
Ghis, eul 2: 3 3 3
Ghis, eul 3: 2 2 2 2
Ghis, eul 4: 1 1
4

Subiect · pagina 5

Problema Grile
Intrare: standard input
Ies, ire: standard output
S˘a facem un exercit, iu de imaginat, ie. S˘a zicem c˘a ai participat la un examen online de tip gril˘a cu un
total de N = 20 ˆıntreb˘ari, structurat astfel:
• Primele 10 ˆıntreb˘ari us, oare, fiecare valorˆand 2 puncte s, i avˆand 5 variante de r˘aspuns.
• Urm˘atoarele 6 ˆıntreb˘ari au fost medii, fiecare valorˆand 3 puncte s, i avˆand 5 variante de r˘aspuns.
• Urm˘atoarele 4 ˆıntreb˘ari au fost dificile, fiecare valorˆand 5 puncte s, i avˆand 10 variante de r˘aspuns.
Fiecare ˆıntrebare are exact un r˘aspuns corect s, i pot, i alege s˘a nu r˘aspunzi deloc la o ˆıntrebare.
Dup˘a ce ai finalizat testul s, i ai trimis r˘aspunsurile, ai observat c˘a ai primit imediat scorul t˘au total, des, i
concursul nu se terminase ˆınc˘a, iar unii concurent, i ˆınc˘a rezolvau subiectul. Asta ˆıt, i d˘a de gˆandit: oare
cineva care are mai multe conturi poate folosi scorul total pentru a extrage informat, ii despre r˘aspunsurile
corecte?
ˆIn practic˘a acest lucru nu s-a ˆıntˆamplat, dar ˆın teorie este perfect posibil. ˆIn aceast˘a problem˘a trebuie s˘a
concepet, i o strategie care s˘a minimizeze num˘arul de conturi pe care ar fi trebuit s˘a le avet, i ca s˘a putet, i
obt, ine punctaj maxim la acest examen imaginar de tip gril˘a.
Interact, iune
Programul vostru va fi evaluat pe 10 teste, fiecare valorˆand 10 puncte. ˆIn cadrul unui test, programul
vostru va simula T = 200 de examene. Fiecare examen este structurat conform descrierii de mai sus s, i
are un set de r˘aspunsuri corecte generate aleator uniform.
Init, ial vet, i citi valoarea lui T . Apoi, ˆıncepet, i examenul 1. Cˆat timp nu at, i obt, inut punctaj maxim pentru
examenul curent, putet, i trimite un set de r˘aspunsuri c˘atre evaluator. Un set de r˘aspunsuri cont, ine exact
N = 20 numere naturale, codificˆand r˘aspunsurile voastre pentru fiecare ˆıntrebare. Pentru o ˆıntrebare
cu M variante de r˘aspuns, variantele sunt numerotate de la 0 la M − 1 inclusiv. Valoarea −1 semnific˘a
faptul c˘a nu dorit, i s˘a r˘aspundet, i la ˆıntrebarea respectiv˘a.
Dup˘a ce afis, at, i un set de r˘aspunsuri, putet, i citi scorul obt, inut de acest set. Dac˘a acest scor este maxim,
examenul curent s-a terminat, iar evaluatorul va trece tacit la urm˘atorul examen (iar voi trebuie s˘a facet, i
la fel). Altfel, evaluatorul as, teapt˘a urm˘atorul set de r˘aspunsuri. Putet, i trimite cel mult 200 de seturi de
r˘aspunsuri ˆın cadrul unui examen.
Atent, ie! Protocolul de interact, iune trebuie respectat cu strictet, e. ˆInc˘alcarea protocolului poate afecta
evaluarea solut, iei ˆın feluri neas, teptate. ˆIn cazul anumitor tipuri de gres, eli (spre exemplu, afis, at, i o variant˘a
invalid˘a pentru o anumit˘a ˆıntrebare sau dep˘as, it, i limita de 200 de seturi per examen), evaluatorul va afis, a
valoarea −1 ˆın loc de scorul total s, i va ˆıncheia interact, iunea cu 0 puncte. Putet, i folosi acest semnal
pentru a v˘a opri programul.
Punctaj
Dac˘a programul vostru obt, ine punctaj maxim pentru un examen, evaluatorul va ret, ine num˘arul de seturi
pe care le-at, i trimis ca s˘a realizat, i acest lucru. Fie aceast˘a valoare S. La finalul interact, iunii, programul
va face media valorilor S pentru toate cele 200 de examene, fie aceast˘a valoare Smed. Atunci punctajul
pentru un test este dat de formula 0.1 · f (Smed), unde
f (x) =



100, dac˘a x ≤ 30
152.5 − 1.75 · x, dac˘a 30 < x ≤ 70
45.62 − 0.22 · x, dac˘a 70 < x ≤ 200
5

Subiect · pagina 6

Exemple
intrare ies, ire
2
3
4
0
3
4
0 0 0 0
0 0 0 1
0 1 -1 0
1 0 0 0
1 0 1 0
Explicat, ii
Din cauza limit˘arilor de spat, iu, vom ilustra o interact, iune pentru un test fictiv ˆın care avem T = 2
examene cu N = 4 ˆıntreb˘ari, fiecare cu 2 variante s, i valorˆand cˆate 1 punct. Amintim c˘a toate testele
folosite pentru evaluare vor respecta restrict, iile descrise ˆın enunt, .
Concurentul cites, te ˆın primul rˆand de la tastatur˘a valoarea lui T . Apoi trimite un set de r˘aspunsuri
pentru primul examen (r˘aspunde cu prima variant˘a la toate cele 4 ˆıntreb˘ari). Evaluatorul ˆıi spune c˘a
a obt, inut astfel scorul 3. Concurentul trimite un nou set de r˘aspunsuri (ˆın care schimb˘a r˘aspunsul la a
patra ˆıntrebare) s, i printr-un noroc semnificativ obt, ine 4 puncte, adic˘a punctaj maxim.
ˆIn acest moment, interactorul ˆıncepe un nou examen, iar concurentul trimite seturi de r˘aspunsuri pentru
acesta. Observat, i c˘a ˆın primul set, concurentul alege s˘a nu r˘aspund˘a deloc la ˆıntrebarea cu num˘arul 3.
Dup˘a ˆınc˘a dou˘a seturi trimise, concurentul obt, ine din nou punctaj maxim, iar interact, iunea se termin˘a.
Concurentul a folosit 2, respectiv 3 seturi pentru a rezolva cele dou˘a examene, deci Smed = 2.5
6
Deschide documentul original
Barem · 4 pagini

Barem · pagina 1

MateInfoUB Informatic˘a
Runda 2
Descrierea Solut, iilor
1 Sort
Merit˘a s˘a ne gˆandim la o abordare care construies, te s, irul B incremental, ad˘augˆand cˆate un element la final. ˆIn
acest caz ne ˆıntreb˘am ˆın primul rˆand ce valoare ar trebui s˘a alegem pentru B[1]. Este natural s˘a alegem cea mai
mic˘a valoare posibil˘a, fiindc˘a aceast˘a decizie ne ofer˘a mai mult˘a libertate ˆın alegerea lui B[2].
Acest argument se generalizeaz˘a us, or pentru a obt, ine solut, ia complet˘a: pentru fiecare i, alegem cel mai mic B[i]
care este permutare circular˘a a lui A[i] s, i satisface B[i] ≥ B[i − 1].
Pentru a analiza complexitatea de timp, not˘am c˘a ˆın general un num˘ar de C cifre are cel mult C permut˘ari circulare,
iar timpul necesar pentru a itera peste toate este proport, ional cu C (dac˘a gener˘am urm˘atoarea permutare ˆın timp
constant) sau C2 (dac˘a gener˘am urm˘atoarea permutare ˆın timp O(C)). ˆIn cazul nostru C <= 7, deci atˆat solut, iile
ˆın O(n × C), respectiv O(n × C2) ruleaz˘a suficient de repede pentru a obt, ine punctaj maxim.
2 Kscale
Subtask-ul (N = 1)
Adesea, ˆın cazul problemelor care implic˘a o matrice sau alte structuri multidimensionale, este util s˘a analiz˘am
cazurile de dimensiune mai mic˘a: ˆın acest caz, o matrice 1-D.
La problema de fat, ˘a putem testa efectiv toate variantele de scalare cu k1 = 1; k2 ∈ 1, 2, ..M . Pentru arie minim˘a
trebuie s˘a g˘asim k2 maxim. Pentru a testa dac˘a un k2 este valid, putem ˆımp˘art, i matricea unidimensional˘a ˆın
intervale compacte de lungime k2 ce nu se suprapun (k2 trebuie s˘a fie divizor al lui M ). Dac˘a toate intervalele
compacte astfel formate cont, in un singur tip de caracter (’0’ sau ’1’), atunci exist˘a un A asociat cu valoarea k2
care s˘a reprezinte o solut, ie valid˘a pentru funct, ia scale. Ret, inem s, i construim matricea solut, ie, A, folosind valoarea
maxim˘a k2 ce a fost validat˘a.
Subtask-ul (k1 = k2)
Similar cu subtask-ul 1-D, trebuie s˘a verific˘am toate variantele k1 = k2 = x, cu x ∈ 1, 2..min(N, M ). Complexitatea
de timp este O(N 3).
Subtask-ul (1 ≤ N, M ≤ 100)
O abordare similar˘a se poate aplica dac˘a fix˘am separat k1 s, i k2.
1

Barem · pagina 2

Complexitatea timp O(N 4) se reduce la O
(
N 2
(√N
)2)
dac˘a lu˘am ˆın considerare c˘a putem fixa k1, k2 doar
printre divizorii lui N , respectiv M .
Subtask-ul (1 ≤ N, M ≤ 1000)
Exist˘a cel put, in dou˘a abord˘ari care pot obt, ine punctaj maxim.
Prima variant˘a este s˘a r˘amˆanem pe ideea de a fixa toate valorile fezabile pentru k1, k2, dar s˘a optimiz˘am faza de
validare a perechii, observˆand faptul c˘a putem verifica dac˘a un anumit dreptunghi cont, ine doar valori de 0 sau doar
valori de 1 ˆın timp constant, construind sumele part, iale ale matricei. Astfel, pentru o pereche k1, k2, complexitatea
de verificare se schimb˘a din O(N ∗ M ) ˆın O(N ∗ M/(k1 ∗ k2)), iar suma rezultant˘a este suficient de mic˘a pentru ca
solut, ia s˘a se ˆıncadreze ˆın timp.
A doua variant˘a este s˘a nu mai fix˘am valori pentru k1, k2, ci s˘a ˆıncerc˘am s˘a le deducem din structura matricei. S˘a
revenim la cazul 1-D pentru a dobˆandi nis, te intuit, ie.
ˆIn cazul 1-D trebuie s˘a g˘asim k maxim pentru care exist˘a A astfel ˆıncˆat scale(A, 1, k) = B. Observ˘am c˘a este
necesar s, i suficient ca orice interval maximal de caractere egale s˘a aib˘a lungimea multiplu de k. Pentru a g˘asi k
optim putem, deci, aplica cmmdc pe toate lungimile de intervale maximale cu acelas, i caracter.
Pentru cazul general, N, M ≤ 1000, putem aplica aceeas, i abordare de tip cmmdc, doar c˘a independent pe intervale
maximale orizontale s, i intervale maximale verticale.
Astfel, pentru cazul: B =
1 1 1 1 0 0
1 1 1 1 0 0
0 0 1 1 1 1
0 0 1 1 1 1
k2 va fi egal cu cmmdc dintre lungimile celor 8 intervale maximale 1-D orizontale:
k2 = cmmdc(4, 2, 4, 2, 2, 4, 2, 4) → k2 = 2
s, i k1 va fi calculat prin cmmdc dintre lungimile celor 10 intervale maximale 1D verticale:
k1 = cmmdc(2, 2, 2, 2, 4, 4, 2, 2, 2, 2) = 2.
Pentru a demonstra corectitudinea solut, iei, trebuie s˘a ar˘at˘am dou˘a lucruri:
• Perechea (k1, k2) este valid˘a. Putem imparti matricea B in submatrice disjuncte de dimensiune (k1, k2). Daca
lu˘am ˆın considerare c˘a orice lungime de interval maximal 1D orizontal este multiplu de k2 si orice lungime
de interval maximal 1D vertical este multiplu de k1, atunci avem certitudinea c˘a orice submatrice formata
anterior contine un singur tip de caracter ’0’ sau ’1’.
• Perechea (k1, k2) este optim˘a. S˘a presupunem prin absurd c˘a exist˘a o pereche (k′
1, k′
2) cu k′
1 ∗ k′
2 > k1 ∗ k2.
Atunci k′
1 > k1 sau k′
2 > k2. Putem analiza primul caz f˘ar˘a a restrˆange generalitatea. S, tim c˘a exist˘a un
interval vertical care nu este multiplu de k′
1 (altfel cmmdc-ul calculat nu ar fi de fapt maxim). Putem ar˘ata
c˘a acel interval invalideaz˘a solut, ia (k′
1, k′
2).
Aceast˘a solut, ie poate fi implementat˘a ˆın complexitate O(N ∗ M )
3 Secretariat
Vom face cˆateva observat, ii generale, dup˘a care vom dezvolta solut, ia pe structura subtaskurilor.
1. Pentru a muta o persoan˘a de la o coad˘a este necesar s˘a mut˘am toate persoanele din fat, a ei.
2. ˆIn solut, ia optim˘a fiecare persoan˘a va fi mutat˘a cel mult o dat˘a: din coada la care se afl˘a init, ial la una dintre
cozile asociate ˆın final problemei pe care ˆıncearc˘a s˘a o rezolve. Notat, i c˘a aceste dou˘a cozi pot coincide.
2

Barem · pagina 3

Putem astfel s˘a reformul˘am problema din minimizarea num˘arului de persoane mutate ˆın maximizarea num˘arului
de persoane care nu sunt mutate ˆın timpul operat, iilor. S˘a numim o astfel de persoan˘a fixat˘a.
ˆIn ce condit, ii poate o persoan˘a s˘a r˘amˆan˘a fixat˘a? S˘a lu˘am un exemplu de coad˘a:
Ghis, eul X: 3 2 4 2 2 2
Observ˘am c˘a dac˘a asociem ghis, eului X o alt˘a problem˘a decˆat 2, ultima persoan˘a este nevoit˘a s˘a plece, deci vom
fi nevoit, i s˘a mut˘am ˆıntreaga coad˘a (datorit˘a Observat, iei 1). Dac˘a ˆın schimb ˆıi asociem problema 2, putem fixa
ultimele 3 persoane de la coad˘a (dar nu mai mult, fiindc˘a persoana cu problema 4 trebuie s˘a plece, iar toate
persoanele din fat, a ei trebuie s˘a fac˘a la fel).
S˘a not˘am cu suffixLen[i] lungimea sufixului maximal de persoane cu aceeas, i problem˘a pentru coada cu num˘arul i,
respectiv cu suffixProb[i] indicele acestei probleme. ˆIn general, dac˘a asociem problema SuffixProb[i] ghiseului
i, vom fixa SuffixLen[i] persoane la acest ghiseu. Altfel, vom fixa 0 persoane.
ˆIn acest punct putem calcula usor, dat˘a fiind o asociere ˆıntre ghis, ee s, i probleme, num˘arul maxim de persoane care
pot fi fixate. Fie AssignedProb[i] problema asociat˘a ˆın final ghis, eului i. Num˘arul total de persoane fixate este
atunci suma valorilor SuffixLen[i] pentru tot, i i care respect˘a AssignedProb[i] = SuffixProb[i].
Ne r˘amˆane problema g˘asirii unui AssignedProb[] optim, pe care o vom analiza pentru fiecare subtask.
Subtask-ul (N = K = 2)
ˆIn acest caz exist˘a doar dou˘a variante de a asocia probleme ghis, eelor (1 2 s, i 2 1), putem pur s, i simplu s˘a le ˆıncerc˘am
pe ambele s, i s˘a o alegem pe cea mai bun˘a.
Subtask-ul (N = K ≤ 1 000)
ˆIn acest caz exist˘a N ! asocieri, deci nu avem timp s˘a le ˆıncerc˘am pe toate. Totus, i, s, tim c˘a pentru fiecare problem˘a va
exista exact un ghis, eu asociat, deci putem ˆıncerca s˘a analiz˘am independent alegerea corect˘a pentru fiecare problem˘a.
Este tentant, de exemplu, s˘a asociem fiec˘arei probleme i un ghis, eu j cu SuffixProb[j] = i si SuffixLen[j] maxim
posibil. Observ˘am c˘a unele probleme nu vor g˘asi deloc un astfel de ghis, eu. Vom numi aceste probleme simple,
fiindc˘a ele nu pot contribui la totalul de persoane fixate. Din acest motiv, problemele simple au prioritate sc˘azut˘a
s, i putem s˘a ne imagin˘am c˘a le vom asocia arbitrar ghis, eele r˘amase dup˘a ce prioritiz˘am problemele care pot fixa
persoane.
Ne conduc aceste alegeri la o solut, ie optim˘a global? Din fericire, da. Deoarece un ghis, eu poate contribui cu un
num˘ar de persoane fixate pentru o singur˘a problem˘a, s, tim c˘a dou˘a probleme diferite nu vor concura pe acelas, i
ghis, eu decˆat ˆın cazul ˆın care ambele sunt simple, caz ˆın care sunt irelevante.
Subtask-ul (K ≤ N ≤ 1 000)
ˆIn subtask-ul cel mai general solut, ia optim˘a poate asocia mai multe ghis, ee aceleias, i probleme. Este natural s˘a
ˆıncerc˘am s˘a generaliz˘am solut, ia precedent˘a.
ˆIn acest sens, putem ˆıncerca s˘a hot˘arˆam problema fiec˘arui ghis, eu iterˆand peste ghis, ee ˆın ordine descresc˘atoare a
valorilor SuffixLen[]. Ideal, am dori s˘a asociem cˆat mai des ghis, eul i problemei SuffixProb[i]. Care sunt situat, iile
ˆın care nu putem face acest lucru?
Singura situat, ie este cea ˆın care prin asocierea problemei SuffixProb[i] la ghis, eul i am face imposibil ca problemele
r˘amase ˆınc˘a f˘ar˘a niciun ghis, eu s˘a mai g˘aseasc˘a vreunul. Dar aceast˘a situat, ie poate fi verificat˘a us, or: ˆın timpul
iter˘arii putem p˘astra un contor pentru ghis, eele r˘amase libere, respectiv pentru problemele care nu au primit ˆınc˘a
m˘acar un ghis, eu. Init, ial ambele contoare sunt egale cu N . Apoi la fiecare pas putem calcula cum se modific˘a aceste
contoare dac˘a asociem ghis, eului i problema SuffixProb[i], respectiv dac˘a ˆıl l˘as˘am liber. La final, mai facem o
trecere s, i asociem problemele r˘amase ghis, eelor l˘asate libere.
Dac˘a not˘am cu M num˘arul total de persoane, complexitatea de timp a solut, iei este O(M + sort(N )) unde sort(N )
este complexitatea sort˘arii folosite pentru N elemente. Avˆand N ≤ 1 000, o sortare de complexitate O(N 2) ar fi
intrat ˆın timp f˘ar˘a probleme.
3

Barem · pagina 4

4 Grile
Vom enumera cˆateva strategii posibile, ment, ionˆand c˘a acestea pot fi puternic influent, ate de diverse optimiz˘ari.
• Cea mai simpl˘a strategie este s˘a trimitem pe rˆand, cˆate un r˘aspuns pentru prima ˆıntrebare. Cˆand o rezolv˘am,
ˆıncepem s˘a ghicim a doua ˆıntrebare. Fiindc˘a r˘aspunsurile sunt distribuite aleator, aceast˘a metod˘a trimite ˆın
medie aprox. 70 de seturi.
• O optimizare simpl˘a: dac˘a am r˘amas cu o singur˘a variant˘a neˆıncercat˘a pentru o ˆıntrebare, s, tim c˘a e cea
corect˘a.
• Observ˘am c˘a ne permitem s˘a ˆıncerc˘am ˆın paralel r˘aspunsuri pentru ˆıntreb˘ari din 2 categorii diferite, fiindc˘a
acestea avˆand punctaje diferite, putem deduce din punctajul total care dintre cele dou˘a r˘aspunsuri au fost
corecte. Aceast˘a strategie ne poate duce ˆın zona a aprox. 40 de seturi.
• Analizˆand posibilitatea de a ˆıncerca ˆın paralel 3 ˆıntreb˘ari, observ˘am c˘a putem obt, ine o ambiguitate ˆın cazul
scorului total 5: nu s, tim dac˘a e corect r˘aspunsul de la ˆıntrebarea grea sau celelalte dou˘a. Totus, i, putem
rezolva ambiguitatea printr-un set suplimentar (care poate include s, i ˆıntreb˘ari neimplicate ˆın primul). Mai
mult, observ˘am c˘a probabilitatea de a obt, ine aceast˘a ambiguitate este cel mult 1/4, iar ˆın majoritatea cazurilor
este mult mai mic˘a. Din acest motiv, num˘arul mediu de variante excluse per set de aceast˘a strategie este
foarte apropiat de 3.
• O solut, ie care urmeaz˘a aceast˘a strategie paralel˘a cu 3 r˘aspunsuri, rezolv˘a eficient ambiguitatea s, i are grij˘a
s˘a-s, i adapteze strategia atunci cˆand nu mai sunt disponibile 3 ˆıntreb˘ari din categorii diferite (coborˆand init, ial
la strategia cu 2 ˆıntreb˘ari diferite cˆat timp e posibil˘a) poate obt, ine sub 30 de seturi s, i 100 de puncte.
• Exist˘a strategii care optimizeaz˘a seturile ˆın cadrul unei singure categorii de ˆıntreb˘ari. Spre exemplu, dac˘a la
un moment dat avem M ˆıntreb˘ari cu cˆate 2 variante posibile r˘amase, putem face mai bine decˆat M ˆıntreb˘ari ˆın
medie. Putem trimite r˘aspunsuri la cˆate dou˘a ˆıntreb˘ari simultan. Cu probabilitate 1/2 ambele sunt corecte
sau ambele sunt gres, ite (deci, ambele rezolvate). Cu probabilitate 1/2 trebuie s˘a trimitem un set ˆın plus
pentru a rezolva ambiguitatea. Num˘arul mediu de seturi este astfel 1.5 pentru 2 intrebari, deci 0.75 ∗ M
pentru toate M .
• Optimizarea descris˘a mai sus poate fi generalizat˘a ˆıntr-un algoritm de tip divide-et-impera care ˆıncepe prin
a num˘ara cˆate ˆıntreb˘ari au r˘aspunsul 0, 1, etc. s, i continu˘a prin a face acelas, i lucru recursiv pe submult, imi
mai mici, apelul recursiv putˆand fi oprit cˆand toate ˆıntreb˘arile din submult, imea apelat˘a sunt rezolvate de
r˘aspunsul fixat, sau dimpotriv˘a, niciuna dintre ˆıntreb˘ari nu este rezolvat˘a de r˘aspunsul fixat.
• Strategiile s, i optimiz˘arile de mai sus pot fi generalizate s, i combinate. O astfel de solut, ie hibrid˘a poate obt, ine
chiar un num˘ar mediu de 23.9 de seturi. ˆIn curˆand vom publica problemele pe infoarena.ro s, i v˘a vom invita
s˘a coborˆat, i sub acest prag :).
4
Deschide documentul original

Răspunsuri directe

Ce trebuie să știi despre acest subiect?

Ce document de admitere este acesta?

Pagina prezintă concurs de pregătire din 2021 pentru Informatică, la Facultatea de Matematică și Informatică. Documentul este etichetat după instituție, facultate, program și tipul probei folosind inventarul public verificat. Consultă metodologia actuală a instituției pentru condițiile examenului viitor.

Există și barem sau răspunsuri pentru acest subiect?

Da. Pagina include baremul sau răspunsurile publice asociate acestui subiect, afișate separat ori în același document atunci când sursa le publică împreună. Verifică fiecare rezolvare după ce ai terminat varianta și urmărește exact criteriile de punctare indicate de instituție.

Cum folosesc acest subiect în pregătirea pentru admitere?

Rezolvă documentul fără ajutor și respectă timpul prevăzut de metodologia examenului. Corectează cu baremul disponibil, marchează capitolele unde ai pierdut puncte și repetă exerciții similare. Compară apoi cu alte probe din aceeași facultate și confirmă programa curentă pe site-ul oficial al instituției.