Documente Academic
Documente Profesional
Documente Cultură
Baraj
Firmele de telefonie mobil Dialog si Connex urmeaz s-si instaleze antene satelit ntr-un
spatiu comun. n acest scop, se realizeaz o hart sub forma unui caroiaj dreptunghiular, unde
se dau N puncte prin coordonate naturale, reprezentnd punctele n care vor fi instalate antene
pentru cele dou firme. Managerul Oficiului Concurentei doreste ca nici una din firme s nu
fie dezavantajat. Astfel, ea stabileste urmtoarea conditie care trebuie s fie respectat:
-orice dreapt paralel cu axa Ox sau Oy trasat printr-un punct de coordonate naturale
intersecteaz un numr de antene ale firmei Connex, numr care difer cu cel mult 1 de
numrul de antene ale firmei Dialog intersectate de aceeasi dreapt. Altfel spus, modulul
diferentei dintre numrul antenelor Connex si numrul antenelor Dialog situate pe aceeasi
dreapt este cel mult 1.
Date de intrare:
Prima linie a fisierului de intrare ANTENE.IN contine numrul de puncte (N).
Pe fiecare din urmtoarele N linii sunt scrise cte dou numere x y, desprtite printr-un
spatiu, reprezentnd coordonatele fiecrui punct n care se va instala o anten.
Coordonatele punctelor sunt numere naturale cuprinse ntre 0 si 30000.
pe fiecare linie se vor scrie trei numere desprtite prin cte un spatiu: x y c; primele
dou numere (x, y) reprezint coordonatele unui punct din caroiajul dat, n care este
permis amplasarea unei antene, iar ultimul numr (c) va avea valoarea 1 dac n acel
punct s-a amplasat antena firmei Dialog, respectiv -1 dac s-a amplasat antena firmei
Connex.
ordinea de scriere a punctelor n fisierul de iesire poate fi oarecare.
Exemplu
ANTENE.IN ANTENE.OUT
6 131
41 2 3 -1
32 241
13 3 4 -1
23 411
24 321
34
Baraj
Cerint: Scrieti un program care stabileste numrul total de impozite care pot fi ncasate.
Date de intrare: Prima linie a fisierului de intrare MOST.IN contine numrul de persoane n.
De pe urmtoarele n linii se citesc, pentru fiecare persoan numerele de ordine ale
persoanelor de la care persoana respectiv a mostenit direct (de pe linia i+1 se citesc
numerele de ordine ale persoanelor de la care a mostenit direct persoana i). Fiecare linie se
termin cu zero.
Exemplul 1
MOST.IN MOST.OUT
14 5
0
0
0
0
10
50
80
120
130
Exemplul 2
MOST.IN MOST.OUT
14 0
0
0
0
0
10
50
80
20
30
40
670
90
10 0
12 13 0
Exemplul 3
MOST.IN MOST.OUT
4 1
0
10
120
30
Explicatie: Impozitul este pltit de persoana 4 pentru care cele dou succesiuni distincte
sunt: 1, 2, 3, 4 si 1, 3, 4, strmosul comun fiind persoana 1.
Baraj
Cerint:
S se gseasc cel mai mic numr natural m, multiplu al lui n, format numai cu cifrele date.
Date de intrare:
Prima linie a fisierului de intrare MULTIPLU.IN contine valorile n si k separate printr-un
spatiu.
A doua linie contine cele k cifre separate prin cte un spatiu.
Date de iesire:
Dac problema are solutie, n fisierul MULTIPLU.OUT se va scrie numrul m. n cazul n
care nu exist solutie, n fisierul MULTIPLU.OUT se va scrie mesajul NU.
Restrictie:
1 <= n <= 10000, 1 <= k <= 9
Exemplul 1
MULTIPLU.IN MULTIPLU.OUT
3458 4 31122
1352
Exemplul 2
MULTIPLU.IN MULTIPLU.OUT
15 5 NU
13479
Baraj
Cerint:
Dndu-se un sir de paranteze se cere s se determine numrul lui de ordine, stiind c prima
configuratie
(((...(())...)))
are numrul de ordine 1.
Date de intrare:
Prima linie a fisierului de intrare PAR.IN contine numrul N, iar a doua linie contine sirul de
paranteze.
Date de iesire:
n fisierul de iesire PAR.OUT se va scrie un numr ntreg. Acest numr trebuie s reprezinte
numrul de ordine al parantezrii date, n sirul ordonat lexicografic cresctor al tuturor
parantezrilor corecte formate din N perechi de paranteze.
Exemplul 1
PAR.IN PAR.OUT
3 1
((()))
Exemplul 2
PAR.IN PAR.OUT
4 14
()()()()
Exemplul 3
PAR.IN PAR.OUT
2 2
()()
Exemplul 4
PAR.IN PAR.OUT
4 13
()()(())
Baraj
Baraj
Cristi si Marius s-au hotrt ntr-o zi s se duc la vntoare. Cristi are o pusc destul de
prpdit cu care poate vna doar lupi. Marius n schimb, care tocmai si-a luat bursa, are o
pusc performant cu care poate vna si lupi si mistreti. Ajunsi n pdure, ei si dau seama c
vntoarea nu e treab usoar; ei trebuie s alerge mult dup fiecare animal. Avnd la
dispozitie un numr de doar T minute alocate pentru vntoare si dorind s vneze n acest
timp ct mai multe animale (lupi si mistreti) ei au calculat, pe baza unor informatii date de
pdurar, cte minute trebuie s alerge dup fiecare animal n parte.
Cerint:
Scrieti un program care determin cte animale trebuie s vneze Cristi si Marius pentru ca
mpreun s aduc acas un numr maxim de animale.
Date de intrare:
Prima linie a fisierului de intrare VANATORI.IN contine numrul T, reprezentnd durata
maxim a vntorii.
Pe cea de-a doua linie sunt scrise dou numere L si M, reprezentnd numrul de lupi
respectiv de mistreti, desprtite printr-un spatiu.
Pe cea de-a treia linie se gsesc L numere ntregi, fiecare numr t i (i=1,L) reprezentnd
timpul n care poate fi vnat fiecare dintre cei L lupi.
Cea de-a patra linie contine M numere ntregi, fiecare numr u i (i=1,M) reprezentnd timpul
n care poate fi vnat fiecare dintre cei M mistreti.
Date de iesire:
Pe prima linie a fisierului de iesire VANATORI.OUT se va scrie un singur numr,
reprezentnd numrul maxim de animale pe care le pot vna Marius si Cristi.
Restrictii: 1 <= T <= 300 ; 0 <= L <= 600; 0 <= M <= 600 ; 0 <= ti,ui <= T
Exemplu:
VANATORI.IN VANATORI.OUT
5 5
42
2112
54
Explicatie : Cristi vneaz primul, al doilea si al patrulea lup, iar Marius al treilea lup si al
doilea mistret.
Timp maxim de executie : 10 secunde/test
Un grup de teroristi s-a ascuns ntr-un sistem de canalizare. James Bond, avnd la
dispozitie o harta care descrie configuratia sistemului de canalizare si pozitiile n care
teroristii au amplasat bombe, vrea sa anihileze grupul de teroristi.
Conductele din acest sistem sunt desenate pe harta sub forma unor segmente de
dreapta n plan, astfel nct oricare doua segmente au cel mult un punct comun, care este
capat pentru amndoua segmentele.
Explozia unei bombe afecteaza o zona circulara (interior si frontiera) si este
instantanee pe ntreaga zona afectata. Bombele pot sa difere una de cealalta prin raza de
actiune sau prin timpul la care explodeaza. n urma unei explozii, canalele care trec prin zona
de actiune a bombei devin impracticabile pe segmentul afectat, dar, daca Bond se afla ntr-un
astfel de canal si a trecut deja de zona afectata de explozie, poate sa-si continue drumul. Daca
James Bond se afla n raza de actiune a unei bombe la momentul exploziei, el moare!
La momentul initial (momentul 0), James Bond porneste dintr-un punct al sistemului
de canalizare (capat al unui segment) si se deplaseaza cu viteza constanta, egala cu 1. James
Bond trebuie sa ajunga n punctul n care se afla teroristii (capat al unui segment) n cel mai
scurt timp posibil.
Cerinta: Determinati calea pe care trebuie s-o urmeze James Bond astfel nct sa ajunga viu
la teroristi n cel mai scurt timp.
3 1 20
0 0 10 0 0 0
0 0 10 10 10 0
10 0 10 10 10 10
6 4 2 1
0 0
10 10
Observatii
n procesul de verificare se vor lua n considerare partea ntreaga si primele 2 cifre zecimale.
Pentru datele de test se garanteaza existenta solutiei.
Datele de intrare sunt corecte.
Descompuneri Baraj
Date de intrare:
Fiier de intrare: DESCOMP.IN
Linia 1: N K X
trei numere naturale nenule, separate prin cte un spaiu, avnd semnificaia din
enun.
Date de iesire:
Fiier de ieire: DESCOMP.OUT
Linia 1: NR
numr natural, reprezentnd numrul descompunerilor respectnd cerinele problemei.
Restrictii:
2 <= N 350
Exemplu:
DESCOMP.IN
12 3 2
DESCOMP.OUT
3
Explicaii:
12=1+2+9
12=2+3+7
12=2+4+6
Deert Baraj
Se d o imagine alb-negru care reprezint fotografia, realizat din satelit, a unei zone dintr-un
deert.
n aceast zon se caut o construcie secret de form dreptunghiular. Imaginea poriunii de
deert analizate a fost codificat ntr-o matrice avnd dimensiunile maxime de N255
elemente. Imaginea construciei este codificat ntr-o matrice avnd K32 elemente.
Elementele celor dou matrice pot fi numai caracterele . i #.
Restrictii:
3 N 1024
1<K<N
Fotografia construciei nu se va roti i nu se va oglindi.
Exemplu:
DESERT.IN DESERT.OUT
3 2 2
#....(n total 31 puncte).
#....(n total 31 puncte).
#.........(n total 254 puncte).
#.........(n total 254 puncte).
#.........(n total 254 puncte).
Potrivire Baraj
Restrictii:
3 < N 1000
0 < S 333834000
Dac exist mai multe soluii, n fiier se va scrie una singur.
Exemplu:
POTRIV.IN POTRIV.OUT
4 26 3214
Siruri Baraj
Se dau doua siruri avnd amndoua cte N numere naturale, cuprinse ntre 1 si N/2 (N este
par). Fiecare numar ntre 1 si N/2 apare de exact doua ori n fiecare dintre cele doua siruri.
Cerinta
Determina i subsirul comun avnd lungimea maxima.
Date de intrare
Fisier de intrare: SIRURI.IN
Linia 1: N
numar natural nenul avnd semnificatia din enunt;
Linia 2: a1 a2 a3 . . . aN
N numere naturale nenule, separate prin cte un spatiu, reprezentnd elementele primului
sir;
Linia 3: b1 b2 b3 . . . bN
N numere naturale nenule, separate prin cte un spatiu, reprezentnd elementele celui de-al
doilea sir.
Date de iesire
Fisier de iesire: SIRURI.OUT
Linia 1: NR
Numarul de elemente al subsirului comun.
Linia 2: c1 c2 c3 . . . cNR
NR numere naturale nenule, reprezentnd subsirul comun de dimensiune maxima.
Restrictii
0 < N 15000
N este numar par
Exemplu
SIRURI.IN SIRURI.OUT
10 5
3 5 4 4 2 5 2 3 1 1 4 2 2 3 1
1 4 2 2 3 4 5 5 3 1
Tort Baraj
Gigel a primit de ziua lui un tort dreptunghiular pe care mama lui a desenat un caroiaj. n
mijlocul anumitor ptrele sunt aezate bezele, una ntr-un ptrel. Gigel ar vrea s mnnce ct
mai multe bezele, dar tatl lui a inventat o mecherie prin care sper s reduc pofta de bezele a
lui Gigel.
Gigel a primit i o mulime de buci de ciocolat. Tatl lui i cere s nlocuiasc bezelele
pe care vrea s le mnnce cu buci de ciocolat, formate din dou ptrele. Gigel trebuie s
nlocuiasc ntotdeauna cte dou bezele (vecine pe orizontal sau vertical), fr a suprapune
bucile de ciocolat.
Cerin: tiind c exist suficiente buci de ciocolat, ajutai-l pe Gigel s nlocuiasc ct mai
multe bezele, respectnd regulile impuse de tatl su.
Date de ieire
Fiierul de ieire BANANA.OUT va conine pe prima linie numrul maxim de bananieri care se poate
obine prin conectarea zonelor.
Restricii
1 Nr 16 000
1 xi, yi 10 000, i {1,2,...,Nr}
n testele utilizate K nu va depi numrul de zone.
Dou poziii se nvecineaz pe orizontal dac sunt pe aceeai linie i pe coloane consecutive,
respectiv pe vertical dac sunt pe aceeai coloan i pe linii consecutive.
Exemplu
BANANA.IN BANANA.OUT
10 3 9
7 10
1 1
101 1
2 2
102 1
7 11
200 202
2 1
3 2
103 1
Timp maxim de executare: 1 secund/test
BARAJ
Sursa: FOTBAL.pas, FOTBAL.c, FOTBAL.cpp
Intrare FOTBAL.in
Fotbal Ieire: FOTBAL.out
Cerin
Din diverse motive, organizatorii nu pot refuza aceast dorin a primarilor, aa c v roag s-i ajutai
pentru a putea realiza programul de desfurare a campionatului n condiiile de mai sus. Acest program
trebuie s precizeze ce meciuri se desfoar n fiecare etap i oraele n care au loc respectivele meciuri.
Date de intrare
Pe prima linie a fiierului FOTBAL.IN se afl valoarea lui n.
Date de ieire
Fiierul FOTBAL.OUT va conine n-1 linii. Pe linia i vor fi descrise meciurile din cadrul etapei i, prin
n/2 triplete de forma a b c cu semnificaia: meci ntre echipele a i b n oraul c. ntre numerele ce
alcatuiesc un triplet se va lsa minim un spaiu, iar ntre triplete se va lsa de asemenea minim un spaiu.
Dac nu este posibil programarea meciurilor conform restriciilor impuse se va afia pe prima linie a
fiierului de ieire cuvntul NU.
Restricii
1 n 30, n par
Exemplu
FOTBAL.IN
8
FOTBAL.OUT
1 8 1 2 7 3 3 6 5 4 5 2
1 3 4 2 8 2 4 7 6 5 6 3
1 5 7 2 4 5 3 8 3 6 7 4
1 7 5 2 6 1 3 5 6 4 8 4
1 2 6 3 7 2 4 6 7 5 8 5
1 4 3 2 3 7 5 7 1 6 8 6
1 6 2 2 5 4 3 4 1 7 8 7
Semnificaie: exist 8 echipe, deci 7 orae. Schema de desfurare a concursului poate fi: n etapa 1 se
ntlnesc echipele 1 cu 8 n oraul 1, 2 cu 7 n oraul 3, 3 cu 6 n oraul 5 i 4 cu 5 n oraul 2 etc.)
Observaii
Chiar dac exist mai multe soluii, se va afia una singur.
Ordinea n care sunt afiate meciurile n cadrul unei etape nu conteaz.
Cerin
Scriei un program care determin ctigul maxim obinut de cei K muncitori.
Date de intrare
Fiierul de intrare GARD.IN conine:
GARD.IN Semnificaie
N K N numrul de scnduri; K numrul de muncitori
L1 P1 S1 Li numrul maxim de scnduri ce pot fi vopsite de muncitorul cu numrul i
L2 P2 S2 Pi suma primit de muncitorul i pentru fiecare scndur vopsit de acesta
... Si scndura din gard n faa creia se aeaz muncitorul i
LK PK SK
Date de ieire
n fiierul GARD.OUT vei afia ctigul maxim obinut de ntreaga echip de muncitori.
Restricii i precizri
1 N 16 000
1 K 100
1 Pi 10 000
1 Li , Si N
Toate numerele Si vor fi distincte.
Nu trebuie vopsite neaprat toate cele N scnduri ale gardului.
Este permis ca unul sau mai muli dintre membrii echipei s nu vopseasc nici o scndur, caz n care
scndura n faa creia s-au aezat iniial poate fi vopsit, eventual, de ctre alt muncitor.
Dac problema este rezolvat corect pentru N 1000 (i orice valoare a lui K), se poate obine cel puin
50% din punctajul total.
Exemplu
GARD.IN GARD.OUT Explicaie
8 4 17 muncitorul 1 vopsete intervalul de scnduri [1, 2];
3 2 2 muncitorul 2 vopsete intervalul de scnduri [3, 4];
3 2 3 muncitorul 3 vopsete intervalul de scnduri [5, 7];
3 3 5 muncitorul 4 nu vopsete nici o scndur.
1 1 7
Se tie c juctorii profesioniti de tenis sunt clasai, n funcie de rezultatele obinute, ntr-un
clasament al Asociaiei Juctorilor Profesioniti de Tenis (ATP). Studiindu-se rezultatele
ultimilor ani, s-a constatat c ntr-o partid n care se ntlnesc doi juctori, dac diferena de
locuri n clasament ntre cei doi e mai mare dect k, atunci ctig n mod sigur cel mai bine
clasat; n schimb dac diferena de poziii n clasament e de cel mult k locuri, atunci teoretic
poate s ctige oricare dintre ei.
La un concurs care urmeaz s se desfoare n curnd dup sistemul eliminatoriu, i-au
anunat participarea primii n juctori din clasament (unde n este o putere a lui 2, deci n=2x).
Cerin
S se precizeze juctorul cel mai slab clasat n clasamentul ATP care ar putea teoretic s
ctige concursul, precum i schema de desfurare a partidelor din turneu i ctigtorul fiecrei
partide, pentru ca acesta s ctige turneul.
Date de intrare
Fiierul de intrare ATP.IN conine pe prima linie, valorile lui n i k separate prin minim un
spaiu.
Date de ieire
Fiierul de ieire ATP.OUT va conine:
pe prima linie, poziia n clasament a celui mai slab clasat juctor care teoretic ar putea
ctiga concursul;
pe a doua linie, ntlnirile din primul tur al turneului; o ntlnire va fi descris prin dou
numere, corespunztoare poziiilor din clasament ale juctorilor care o susin, iar primul
juctor dintr-o pereche se consider c va ctiga partida; cele dou numere vor fi separate
printr-un spaiu; pe prima linie vor fi deci, n/2 perechi de numere separate prin minim un
spaiu;
pe a treia linie, ntlnirile din al doilea tur, descrise la fel ca cele din prima linie; pe aceast
linie vor fi n/4 perechi;
...
pe linia x, partidele din semifinalele, descris n acelai mod;
pe linia x+1, partida din final.
Restricii
n=2x
n 5000
Exemplu
ATP.IN ATP.OUT
16 3 11
3 1 5 2 6 4 7 16 8 13 9 14 10 15 11 12
5 3 8 6 9 7 11 10
8 5 11 9
11 8
BARAJ
ajutor Sursa : ajutor.c, ajutor.cpp sau ajutor.pas
Dac te-ai rnit, nu folosi Sprite s tratezi rana. Cel mai bine e s fugi la cel mai apropiat post de prim ajutor.
Norocul tu este c ai o hart din care poi afla coordonatele carteziene ale posturilor de prim ajutor. Ghinionul
este c, din cauza durerii, nu poi s fugi direct spre un post, ci numai pe direciile nord-sud i est-vest. Ca s tii
dac mai are sens s fugi spre un post sau s te bucuri de ultimele clipe de via, cel mai bine e s evaluezi
distana pn la cel mai apropiat post de prim ajutor.
Cel mai apropiat post este cel pentru care distana Manhattan este minim.
De data aceasta ai scpat pentru c timpul necesar ajungerii pn la post a fost suficient ; ns i pui ntrebarea:
dac accidentul s-ar fi ntmplat n alt loc, ai fi scpat ?
Cerin
Se consider N puncte in plan, reprezentnd posturile de prim ajutor i alte M puncte reprezentnd posibile locaii
ale accidentului. Se cere pentru fiecare dintre cele M puncte distana Manhattan pn la cel mai apropiat post.
Date de intrare
Fiierul ajutor.in conine pe prima linie numerele ntregi N i M, n acest ordine, separate printr-un spaiu.
Pe urmtoarele N linii se afl cte dou numere ntregi, separate printr-un spaiu, reprezentnd coordonatele
fiecrui post de prim ajutor. Pe urmtoarele M linii se afl cte dou numere intregi, separate printr-un spaiu,
reprezentnd coordonatele punctelor de accident. Coordonatele se dau n ordinea (abscisa, ordonata).
Date de ieire
Fiierul ajutor.out va conine M linii, cu cte un numr pe fiecare linie, reprezentnd distana minim pn la
cel mai apropiat post de prim ajutor.
Restricii
0 < N < 401
0 < M < 500001
oricare coodonat este un numr ntreg din intervalul [0,32000]
Observaii
Dac te afli deja la un post de prim ajutor (coordonatele sunt identice) distana e 0.
Distana Manhattan este cel mai scurt drum ntre dou puncte, mergnd doar pe direcii paralele cu axele de
coordonate, adic |x1-x2|+|y1-y2|, unde (x1,y1), (x2,y2) sunt coordonatele celor 2 puncte.
n fiierul de intrare pot exista puncte cu aceleai coordonate.
Se acord punctele pentru fiecare test, doar dac toate valorile din fiierul de ieire sunt corecte.
Tot ce face Sprite e s-i potoleasc setea.
Exemplu
ajutor.in ajutor.out
4 4 2
1 1 0
5 5 4
1 5 1
5 1
0 0
1 1
3 3
4 1
Timp maxim de execuie/test: 1.3 secunde pentru Linux i 2 secunde pentru Windows.
BARAJ
Cerin
Scriei un program care s determine numrul de configuraii distincte ce se pot obine dup
nscrierea celor N persoane la cele P excursii organizate, astfel nct cei K ghizi s fie nscrii n
excursii diferite.
Date de intrare
Fiierul de intrare se numete ex.in i conine o singur linie pe care se afl 3 numere naturale
separate prin cte un spaiu: N K P (reprezentnd numrul de persoane, numrul de ghizi i
respectiv numrul de excursii).
Date de ieire
Fiierul de ieire ex.out conine o singur linie pe care se afl numrul de configuraii distincte.
Restricii
1KPN100
ntr-o configuraie nu conteaz ordinea excursiilor sau ordinea n care se nscriu persoanele la o
excursie.
Exemplu
ex.in ex.out Explicaie
5 3 4 7 Cele 7 configuraii distincte sunt:
N K P (1,4)(2)(3)(5)
3 ghizi (1)(2,4)(3)(5)
4 exc (1)(2)(3,4)(5)
(1)(2)(3)(4,5)
(1,5)(2)(3)(4)
(1)(2,5)(3)(4)
(1)(2)(3,5)(4)
Timp maxim de execuie: 0.1 secunde/test sub Linux i 0.5 secunde sub Windows.
BARAJ
Pentru posturile de ghid s-au nscris N voluntari, care au fost numerotai distinct de la 1 la N. Fiecare dintre
cei N voluntari a specificat un interval de timp n care poate asigura servicii de ghid. Voluntarul i poate fi
ghid n intervalul [T1i, T2i) (intervalul este nchis n T1i i deschis n T2i).
Cerin
Dndu-se intervalele de timp asociate celor N voluntari, determinai o variant de angajare astfel nct n
fiecare moment de timp s fie prezeni exact K ghizi. Numrul total de voluntari angajai este irelevant.
Date de intrare
Prima linie a fiierului de intrare ghizi.in conine dou numere ntregi N i K, separate printr-un spaiu,
cu semnificaiile de mai sus. Voluntarii sunt numerotai distinct, de la 1 la N. Fiecare dintre urmtoarele N
linii conine descrierea unui voluntar; mai exact linia i+1 conine valorile ntregi T1i i T2i pentru
voluntarul i.
Date de ieire
n fiierul ghizi.out vei afia pe prima linie numrul total de ghizi angajai (M). Pe a doua linie vei scrie
M numere distincte ntre 1 i N, ordonate cresctor, reprezentnd numerele de ordine ale ghizilor angajati.
Restricii i precizri
1 N 5000
0 T1 < T2 100 pentru fiecare dintre cei N voluntari
1 K N
Pot exista 2 voluntari cu acelai interval asociat.
Toate testele date vor avea soluie.
Dac exist mai multe soluii, afiai una oarecare.
La preselecie particip numai fete.
Exemplu
ghizi.in ghizi.out
6 2 4
0 100 1 4 5 6
0 15
15 99
0 10
10 20
20 100
Timp maxim de execuie: 0.1 secunde/test sub Linux i 0.3 secunde sub Windows.
BARAJ
L3
u4 L4
u3
L2 u2 x mna robotului
L1
u1
O (umrul robotului)
Cerin
Scriei un program care, pentru o poziie dat, determin o configuraie pentru braul robotului care s-i
permit acestuia s culeag componenta din poziia respectiv, dac este posibil.
Date de intrare
Fiierul de intrare robot.in conine pe prima linie un numr natural N, care reprezint numrul de
segmente din care este format braul robotului.
Pe fiecare dintre urmtoarele N linii se afl cte un numr natural. Numrul aflat pe linia i+1 este lungimea
celui de-al i-lea segment al braului robotului.
Pe ultima linie se afl dou numere ntregi x i y, separate prin cte un spaiu, reprezentnd coordonatele
poziiei la care trebuie s ajung mna robotului.
Date de ieire
Fiierul de ieire robot.out conine o singur linie pe care se afl valoarea 0 dac nu este posibil ca mna
robotului s ajung n poziia x, y. Dac problema are soluie, fiierul de ieire conine N linii. Pe linia i se
afl valoarea real ui care reprezint unghiul dintre segmentul i i segmentul i-1 (pentru orice i de la 2 la
N), iar valoarea u1 reprezint unghiul pe care segmentul 1 l formeaz n umrul robotului cu axa OX.
Restricii i precizri
2N10000
1Li200
0ui<360
-100000x, y100000
Unghiurile se msoar n sens trigonometric i sunt exprimate n grade.
Programul de evaluare va verifica dac punctul n care este plasat mna robotului pentru configuraia
dat de dvs. (xp, yp) coincide cu punctul de coordonate (x, y). Eroarea admis este de 0.001. Mai
exact, max{|x-xp|, |y-yp|}<0.001
Orice linie se termin cu un marcaj de sfrit de linie (Enter).
Exemple
robot.in Robot.out
3 125.6725
10 0
5 252.5424
25
15 20
robot.in Robot.out
3 0
10
5
25
2 4
Timp maxim de execuie/test: 0.1 secunde pentru Linux i 0.3 secunde pentru Windows.
BARAJ
Cerin
Pentru n dat se cere s se determine numrul maxim de biei ce pot lua loc n sal, astfel nct s se respecte
regulile anterioare.
Date de intrare
n fiierul text sala.in pe prima linie se afl numrul de cifre ale lui n, iar pe linia a doua se afl cifrele
numrului n separate ntre ele prin cte un spaiu.
Date de ieire
n fiierul text sala.out pe prima linie se va afia numrul din cerin.
Restricii
1 n 10101
Pentru 30% din teste n<100
Pentru 70% din teste, n<30000
Exemplul 1
sala.in
1
5
sala.out
10
Exemplul 2
sala.in
2
1 3
sala.out
61
BARAJ
telegraf Sursa : telegraf.c, telegraf.cpp sau telegraf.pas
Pn nu demult, comunicaia la distan se fcea cu ajutorul telegrafului. Folosind telegraful, se pot transmite
dou tipuri de semnale: punct i linie. n general, dorim s transmitem texte formate din litere ale alfabetului
latin i cifre (n total, 36 de simboluri). Trebuie deci s folosim o codificare, adic s asociem fiecruia din cele
36 de simboluri o succesiune distinct de linii i puncte. Pentru a putea decodifica o succesiune recepionat de
linii i puncte, este necesar ca nici un simbol s nu aib o codificare identic cu nceputul codificrii pentru un
alt simbol. S considerm cteva exemple (presupunnd c nu vrem s transmitem dect literele A,B,C):
Exemplul 1 reprezint o codificare corect. Exemplul 2 reprezint o codificare greit, pentru c nceputul
codificrii pentru A este identic cu codificarea pentru B (deci, o secven de genul .-- este ambigu, putnd
nsemna i A i BC). Exemplul 3 este de asemenea o codificare greit pentru c nceputul codificrii pentru A
este identic cu codificarea pentru C (o secven precum .-..-. este ambigu, putnd nsemna fie AB, fie CC).
Se tie c ntr-o transmisie telegrafic, punctul dureaz o secund, iar linia 2 secunde. Putem calcula astfel
timpul necesar transmiterii unui text.
Folosind codificarea din exemplul 1, transmiterea textului CABCA = - .. .- - .. dureaz 11 secunde.
Observai c lungimea transmisiei se poate calcula i astfel: 2(A) + 1(B) + 2(C) = 2(..) + 1(.-) + 2(-) = 2*2 + 1*3
+ 2*2 = 11.
Cerin
Se consider un text, dat prin frecvena apariiei fiecrui simbol (dintre cele 36 considerate). S se gseasc
durata minim necesar transmiterii acelui text, folosind o codificare aleas corespunztor.
Date de intrare
Fiierul telegraf.in conine o singur linie cu 36 de numere ntregi nenegative, separate prin cte un spaiu,
reprezentnd numrul de apariii ale fiecrui simbol n textul ce trebuie transmis.
Date de ieire
Fiierul telegraf.out va conine un singur numr, i anume lungimea minim (n secunde) necesar pentru
transmiterea textului.
Restricii
nici unul din cele 36 de simboluri nu apare de mai mult de 1 000 000 de ori n textul considerat
exist cel puin dou simboluri cu numr de apariii nenul
Exemplu
telegraf.in
2 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
telegraf.out
11
Se constat c este optim s se transmit acest text folosind codificarea din Exemplul 1, obinnd o lungime
minim a transmisiei de 11 secunde.
Timp maxim de execuie: 0.1 secunde pe test pentru Linux i 0.3 secunde pentru Windows
Not: 40% dintre teste vor conine maxim 16 simboluri cu frecven de apariie nenul.
Probleme pentru laborator: Coordonator: Universitatea "Ovidius" Constanta
Algoritmi si Structuri de Date Adrian Rabaea Facultatea de Matematica si Informatica
Olimpiada Naional de Informatic
Baraj 1
Se d un ir de N numere naturale, care trebuie ordonat cresctor. Singura operaie permis este s considerai
elementele de pe poziiile i, i+1, ..., j (pentru i i j arbitrare, i<j), i s inversai ordinea acestor elemente
(adic elementul de pe poziia i ajunge pe poziia j, i+1 ajunge pe poziia j-1, ..., j ajunge pe poziia i). Costul
unei astfel de operaii este numrul de elemente din subirul inversat, i anume j-i+1.
Cerin
Scriei un program care s determine o secven de operaii care ordoneaz cresctor irul dat i are un cost total ct
mai mic (dar nu obligatoriu minim).
Date de intrare
Fiierul de intrare invsort.in conine pe prima linie numrul N, i apoi N linii cu elementele irului dat (nu
neaprat distincte).
Date de ieire
Fiierul de ieire invsort.out va conine pe fiecare linie descrierea unei operaii. O operaie este descris prin
numerele i i j, separate printr-un spaiu. Aceste numere satisfac 1 <= i < j <= N.
Restricii
Punctaj
dac irul de operaii (executate n ordinea din fiierul de ieire) nu ordoneaz intrarea, primii 0 puncte
n cazul n care costul total este cel mult 4000000 (patru milioane) primii punctaj maxim
n cazul n care costul total este cel mult 40000000 (patruzeci de milioane) primii 40% din punctajul pe test
n 50% din teste irul de intrare conine numai elemente de 0 i 1
pentru toate testele folosite la corectare, N=32000
Exemplu
Timp maxim de execuie/test: 0.5 secunde pentru Linux i 2 secunde pentru Windows.
Se consider o matrice dreptunghiular A cu m linii i n coloane cu valori 0 sau 1, liniile i coloanele fiind
numerotate de la 1 la m, respectiv de la 1 la n. Numim dreptunghi de coluri (x1,y1) (x2,y2) cu x1<x2 i
y1<y2 mulimea elementelor Aij cu x1ix2 si y1jy2. Numim perimetru al dreptunghiului de
coluri (x1,y1) (x2,y2) mulimea elementelor Aij pentru care (i=x1 i y1jy2) sau (i=x2 i
y1jy2) sau (j=y1 i x1ix2) sau (j=y2 i x1ix2).
Cerin
Determinai diferena maxim dintre numrul de elemente egale cu 1 i numrul de elemente egale cu 0
aflate pe perimetrul aceluiai dreptunghi, precum i numrul de dreptunghiuri pentru care se obine aceast
diferen.
Date de intrare
Pe prima linie a fiierului de intrare peri.in sunt scrise numerele m i n, separate printr-un singur
spaiu. Pe urmtoarele m linii este dat matricea A, numerele de pe aceeai linie fiind separate de cte un
spaiu.
Date de ieire
Fiierul de ieire peri.out va conine o singur linie pe care se afl dou numere ntregi separate
printr-un spaiu. Primul numr este diferena maxim dintre numrul de elemente 1 i numrul de
elemente 0 de pe perimetrul unui dreptunghi. Al doilea ntreg este numrul de dreptunghiuri pentru care
diferena dintre numrul de elemente 1 i numrul de elemente 0 de pe perimetru este maxim.
Restricii
1 m,n 250
Prin diferen nu se nelege diferen n valoare absolut!
Exemplu
peri.in peri.out
4 5 4 2
1 0 0 1 0
0 1 1 0 0
0 1 0 1 0
1 1 1 0 1
Timp maxim de execuie/test: 0.2 secunde pentru Linux i 1 secund pentru Windows.
Geo a nvat o metod de a fixa n puncte pe un cerc de raz r, astfel nct s mpart cercul n n coarde
egale ca lungime. Apoi i-a ales un numr k i a nceput s uneasc punctele succesiv, din k n k, pstrnd
acelai sens, pn ce a ajuns n punctul din care a pornit. Astfel, dac a fixat n=10 puncte pe cerc pe care
le-a numerotat 1, 2, , 10 (vezi figura) i i-a ales k=6, atunci el unete punctul 1 cu 7, apoi pe 7 cu 3,
apoi 3 cu 9, apoi 9 cu 5, i n sfrit 5 cu 1.
Apoi a colorat poligonul format n interior, pornind din centrul cercului i fr a depi vreuna dintre liniile
desenate. El se ntreab n final cte laturi are poligonul colorat i care este aria acestuia.
Cerin
Pentru n, k i r numere naturale date, se cere numrul de laturi L ale poligonului colorat i aria S a
acestuia (cu 2 zecimale exacte).
Date de intrare
Din fiierul poligon.in se citesc trei numere naturale n,
k i r desprite prin cte un spaiu.
Date de ieire
n fiierul poligon.out se scriu, pe linii diferite dou
valori: pe prima linie numrul L de laturi ale
poligonului colorat, iar pe linia a doua numrul real
reprezentnd aria acestuia.
Restricii
3 < n < 10001 numr natural
0 < k < n numr natural
pentru n par, 2 * k n
10 < r < 501
Pentru fiecare test, dac numrul de laturi determinat este corect, primii 20% din punctajul
maxim de pe testul respectiv. n plus, dac i aria determinat este corect, primii punctajul
maxim.
Pentru 70% din testele folosite la evaluare, n < 501
Exemple
poligon.in poligon.out poligon.in poligon.out
10 6 100 5 30 13 200 30
3468.92 5452.04
Timp maxim de execuie/test: 0.1 secunde pentru Linux i 0.1 secunde pentru Windows.
S ... S S S
Y2 Y0
Y(N-1) Y1
Problema cu aceste sumatoare pe mai multi bii este c un sumator trebuie s atepte transportul de la unitatea
anterioar (exceptnd primul sumator).
Dac unui sumator pe un bit face calculul ntr-o secund, atunci pentru un sumator pe N bii (format din N
sumatoare pe un bit) vor fi necesare N secunde.
Pentru a mbunti performana acestor sumatoare pe N bii s-au introdus nite uniti capabile s anticipeze
transportul, adic intrarea Ti. Aceste uniti verific datele de intrare precedente X1(i-1) i X2(i-1). Dac
amndou sunt 0 atunci Ti va fi 0, indiferent de ce primete acea unitate ca transport de intrare. De asemenea dac
amndou sunt 1 atunci Ti va fi 1. Toate sumatoarele care folosind anticipaia pot calcula transportul de la
sumatorul precedent ncep calculul odat cu primul sumator. Comunicarea transportului de la un sumator la
urmtorul se realizeaz instantaneu.
Cercettorii care au inventat aceste uniti de transport vor s tie cu ct mbuntesc performana sistemului i au
hotrt s se fac toate adunrile posibile, pentru a compara cu vechiul sistem. Prin toate adunrile posibile se
nelege c se va aduna orice numr pe N bii cu orice numr pe N bii fix o dat (n total 4N adunri). Ei vor s tie
ct au durat aceste operaii, adic suma tuturor timpilor pentru fiecare adunare.
Cerin: Scriei un program care s determine numrul total de secunde necesare pentru toate adunrile, folosind
dispozitivele de anticipare.
Date de intrare: Fiierul de intrare anticip.in conine o singur linie pe care se afl numrul natural N
reprezentnd numrul de bii.
Date de ieire: Fiierul de ieire anticip.out va conine o singur linie pe care va fi scris un numr natural
reprezentnd numrul de secunde necesare tuturor adunrilor posibile.
Restricii i precizri
0 < N < 51
Problema aceasta nu are nici o legtur cu vreun balaur.
Exemplu
anticip.in anticip.out Explicaii
3 128 16 adunri se realizeaz ntr-o secund; 32 adunri se realizeaz n dou
secunde; 16 adunri se realizeaz n trei secunde.
De exemplu, adunarea 010+001 necesit 3 secunde. Adunarea 010+000 necesit
2 secunde. Adunarea 010+110 necesit o secund (primul sumator adun biii
din dreapta).
Timp maxim de execuie pe test: 0.5 secunde sub sistemul de operare Linux.
bir
Fiier surs: bsir.pas, bsir.c sau bsir.cpp
Se d un numr natural N.
Definim un bir de lungime N ca fiind irul x0, x1, ..., xN-1, unde
Cerin
Determinai numrul M de secvene palindromice de lungime cel puin 2 dintr-un bir de lungime N.
Date de intrare
Fiierul de intrare bsir.in conine pe prima linie numrul natural N.
Date de ieire
Fiierul de ieire bsir.out va conine M modulo 30103 (restul mpririi lui M la 30103).
Restricii i precizri
2 <= N <= 1018
Secvena xi, xi+1, ..., xj-1, xj se numete palindromic dac xi=xj, xi+1=xj-1, ...
Exemple
evantai
Fiier surs: evantai.c, evantai.cpp sau evantai.pas
Lui Algorel i plac mult irurile de numere naturale cu proprieti ct mai ciudate. Cutnd astfel de ciudenii ale
informaticii, a gsit printr-o carte prfuit de vreme un nou tip de ir denumit evantai. Un evantai este un ir cu un
numr par de termeni, E1 E2 ... E2K, cu urmtoarea proprietate:
Date de intrare
Prima linie a fiierului evantai.in conine numrul ntreg N, reprezentnd numrul de elemente ale irului.
Urmtoarele N linii conin, n ordine, elementele irului A.
Date de ieire
Pe prima linie a fiierului evantai.out se va afla un singur numr ntreg C, reprezentnd numrul de subiruri
evantai. Rezultatul va fi afiat modulo 30103.
Restricii si precizari
2 N 700
elementele irului sunt numere ntregi distincte cuprinse ntre 1 i 1000
prin subir se nelege orice niruire de termeni Ai1 Ai2 ... Aik astfel nct i1 < i2 < ... < ik
Exemplu
evantai.in evantai.out
4 7
1
2
3
6
Cerin: Scriei un program care s determine o modalitate de atribuire a zborurilor celor (n+1) div 2
companii n conformitate cu regulile enunate mai sus.
Date de intrare: Fiierul de intrare galax.in conine o singur linie pe care va fi scris un numr natural n,
reprezentnd numrul de galaxii.
Date de ieire: Fiierul de ieire galax.out va conine cte o linie pentru fiecare pereche de galaxii. Pe aceast
linie vor fi scrise 3 numere naturale a b c, cu semnificaia zborul dintre galaxiile a i b este atribuit companiei
c.
Restricii i precizri
3<n<1001
a div b este ctul mpririi ntregi a lui a la b.
Exemplu
galax.in galax.out Explicaie
4 1 4 1 compania 1 compania 2
1 2 2 1 4 1 4
4 3 1
3 1 2
3 2 1
2 4 2 2 3 2 3
galax.in galax.out Explicaie
5 1 2 1
1 5 3 1 2 1 2
2 4 1
4 3 1 5 3 5 3
5 3 1
4 4
1 3 2
2 3 2 compania 1 compania 2
1 4 3 1 2
5 2 2
5 4 2 5 3
4 compania 3
Timp maxim de execuie pe test: 0.5 secunde sub sistemul de operare Linux.
spioni
Fiier surs: spioni.pas, spioni.c sau spioni.cpp
Serviciile secrete din ara Crivului au o reea foarte bine pus la punct. Reeaua este format din N centre,
numerotate de la 1 la N. ntre centre exist drumuri ce pot fi parcurse n ambele sensuri, de lungimi cunoscute. Un
drum unete dou centre. Utiliznd drumurile existente, ntre oricare dou centre exist legtur (direct sau
trecnd prin alte centre). Distana dintre dou centre este lungimea total minim a drumurilor parcurse pentru a
ajunge de la un centru la cellalt.
eful Teo a hotrt mprirea tuturor centrelor n dou departamente, de spionaj i de contraspionaj. O mprire
este considerat optimal dac maximul distanelor dintre oricare dou centre din cadrul aceluiai departament
este minim.
Dac exist mai multe soluii cu acelai maxim, se alege soluia pentru care diferena (n valoare absolut) dintre
numrul de centre din departamentul spionaj i numrul de centre din departamentul contraspionaj este minim.
Dac i n acest caz exist mai multe soluii, este preferat prima n ordine lexicografic.
Cerin
Dndu-se descrierea reelei, s se scrie un program care s gseasc o mprire optimal a centrelor n dou
departamente.
Date de intrare
Fiierul de intrare spioni.in conine pe prima linie numerele naturale N i M reprezentnd numrul de centre i
respectiv numrul de drumuri dintre ele. Pe fiecare dintre urmtoarele M linii vor fi scrise cte trei numere
naturale; mai exact, pe linia i+1 sunt scrise numerele ai bi ci cu semnificaia exist un drum ntre centrul ai i
centrul bi de lungime ci. Numerele scrise pe aceeai linie n fiierul de intrare sunt separate prin cte un spaiu.
Date de ieire
Fiierul de ieire spioni.out va conine dou linii. Pe prima linie va fi scris un numr natural care reprezint
maximul distanelor dintre dou centre din acelai departament. Pe cea de a doua linie vor fi scrise N caractere.
Caracterul i va fi litera C dac centrul i va fi n departamentul contraspionaj sau litera S dac centrul i va fi n
departamentul spionaj n mprirea optimal determinat.
Restricii i precizri
2 < N < 101
0 < ai, bi N
0 < M, ci < 16001
Spunem c mprirea (x1, x2, ..., xN) preced din punct de vedere lexicografic mprirea (y1, y2, ..., yN) dac
exist k astfel nct xi=yi, pentru orice i<k i xk<yk; litera C < litera S.
Se vor acorda punctaje pariale dup cum urmeaz:
pentru distana maxim determinat corect: 20% din punctajul testului respectiv
dac soluia este corect (din punctul de vedere al distanei maxime i al diferenei absolute minime), dar nu
este prima n ordine lexicografic: 60%
pentru obinerea primei soluii corecte n ordine lexicografic: 100%.
Exemple
spioni.in spioni.out Explicaie
5 4 3 Maximul distanelor dintre oricare dou centre din cadrul aceluiai
1 2 1 CCCCS departament este 3.
2 3 1
Diferena n valoare absolut dintre numrul de centre din
3 4 1
2 5 7 departamentul spionaj i cel de contraspionaj este 3.
Soluia este prima n ordine lexicografic.
O alt soluie ar fi SSSC, dar aceasta este mai mare lexicografic.
spioni.in spioni.out Explicaie
5 5 3 Maximul distanelor dintre oricare dou centre din cadrul aceluiai
1 3 1 CCCCS departament este 3.
3 2 1 Diferena n valoare absolut dintre numrul de centre din
2 5 7
3 4 7 departamentul spionaj i cel de contraspionaj este 3.
2 4 1
Timp maxim de execuie/test: 0.1 secunde sub sistemul de operare Linux
Probleme pentru laborator: Coordonator: Universitatea "Ovidius" Constanta
Algoritmi si Structuri de Date Adrian Rabaea Facultatea de Matematica si Informatica
Ministerul Educaiei i Cercetrii
Olimpiada Naional de Informatic Baraj
Galai, 25 martie 1 aprilie 2005
Cerin
Scriei un program care s ajute nepoii s determine poziiile celor 3 rui.
Date de intrare
Fiierul de intrare texan.in conine:
Pe prima linie numrul natural n, care reprezint numrul de coluri ale punii
Pe urmtoarele n linii se afl cte o pereche de numere reale, care reprezint coordonatele colurilor
punii separate printr-un spaiu (n ordinea: abscis ordonat). Colurile punii sunt specificate
n ordinea invers a acelor de ceasornic.
Date de ieire
Fiierul de ieire texan.out va conine trei linii. Fiecare linie conine coordonatele unuia dintre cei trei
rui (n ordinea: abscis ordonat) cu un spaiu ntre ele. Aceste coordonate vor fi specificate cu 6
zecimale (cu rotunjire).
Restricii i precizri
4 < n < 501
Coordonatele colurilor punii sunt numere raionale din intervalul [-7000, 7000].
La evaluare o soluie este considerat corect cu o marj de eroare de 0.01.
Dac soluia nu este unic, va fi afiat una oarecare.
n fiierele de test, distana dintre oricare dou coluri ale punii este 1.
Latura triunghiului echilateral determinat trebuie s fie > 0.1.
Pentru datele de test exist ntotdeauna o soluie care respect cerinele problemei.
Exemplu
texan.in texan.out
5 12.500000 7.500000
10 0 -3.150637 4.725956
15 15 2.272289 19.666827
0 20.5
-10 15
0 0
Baraj
Sursa: acolor.c, acolor.cpp, acolor.pas Ziua 1
acolor 100 puncte
Omida-agent Smith s-a sturat s tot distrug arborii i acum i dezvolt simul artistic i place mult mai mult
s-i coloreze.
De fiecare dat cnd vrea s creeze o nou arbo-pictur i ia cu el cele K creioane colorate, i alege un arbore din
grdin i pornete la lucru.
Arborele ales de Smith este alctuit din N noduri, are ca rdacin nodul R i o form potrivit pentru pictur:
fiecare nod are cel mult dou crengi care duc spre dou noduri: unul la stnga i/sau unul la dreapta;
ntre oricare dou noduri exist un drum unic format din crengi distincte, pe care omida se poate plimba pentru
a ajunge de la un nod la cellalt;
nodurile din subarborele stng al unui nod sunt toate plasate mai la stnga dect acesta, iar cele din subarborele
drept sunt toate mai la dreapta, de aceea nodurile au fost etichetate de la 1 la N de la cel mai din stnga pn la
cel mai din dreapta.
Omida a observat c picturile sale sunt frumoase doar dac respect unele reguli de baz pe care le-a citit ntr-o
carte:
orice nod trebuie s fie colorat cu exact una dintre cele K colori;
un nod trebuie s fie colorat diferit fa de printele dinspre rdcin (adic fa de nodul care preced nodul
respectiv atunci cnd omida se plimb pe drumul de la rdcin la nod);
privit din exterior arborele trebuie s fie colorat diferit de la stnga la dreapta: orice nod are o culoare diferit
de cel mai apropiat nod la stnga de el i fa de cel mai apropiat nod la dreapta (cu alte cuvinte culoarea
nodului etichetat cu i trebuie s fie diferit de culoarea nodurilor etichetate cu i-1, i+1).
Cerin
Scriei un program care s determine pentru un arbore dat n cte picturi frumoase (picturi care s respecte criteriile
din enun) poate fi transformat acesta. Deoarece numrul cerut poate fi foarte mare, este suficient s aflai restul
mpririi la 10007.
Date de intrare
Fiierul de intrare acolor.in va conine pe prima linie numerele ntregi N, R, K separate prin cte un spaiu. Pe
urmtoarele N linii este descris structura arborelui. Mai exact, pe linia i+1 vor exista dou numere sti, dri
separate printr-un spaiu, reprezentnd nodul fiu spre stnga i respectiv nodul fiu spre dreapta al nodului i. Dac
un nod nu are fiu spre stnga i/sau fiu spre dreapta atunci numrul corespunztor va fi 0.
Date de ieire
Fiierul de ieire acolor.out va conine o singur linie pe care va fi scris numrul de picturi frumoase care se
pot obine pentru arborele dat.
Restricii i precizri
0 < N 100 000, 1 R N, 1 K 100
Se acord 40 de puncte pentru teste cu N100 i K10. Se acord 60 de puncte pentru teste cu N400 i K15.
Memorie disponibil: 64 MB, din care 5 MB pentru stiv.
Exemplu
acolor.in acolor.out Figur pentru primul exemplu acolor.in acolor.out
9 5 4 3601 3 1 2 0
0 0 8 0 3
1 3 0 0
0 4 4 9 2 0
\
0 0 1 3 7
2 6
0 7 2 6
0 9
5
0 0
8 0
Timp maxim de execuie: 0.6 secunde/test
Baraj
Sursa: evo.c, evo.cpp, evo.pas Ziua 1
evo 100 puncte
Este binecunoscut faptul c informaia genetic a unui organism poate fi codificat sub forma unui ir
format din simboluri din mulimea {g, a, t, c}. Pornind de la aceast codificare biologii au identificat 3 operaii
asupra irurilor de simboluri, operaii care pot modela evoluia anumitor organisme.
1. Complementaritate. Simbolul a este complementarul lui t (i reciproc), iar simbolul c este complementarul lui
g (i reciproc). Pentru un simbol x vom nota cu c(x) complementarul su. Prin extensie, dac w este un ir de
simboluri din mulimea {a, c, g, t} notm cu c(w) irul obinut prin complementarea simbolurilor lui w. De
exemplu, pentru w=aaactg, avem c(w)=tttgac.
2. Oglindire. Vom nota prin wR irul obinut prin oglindirea lui w. De exemplu pentru w=aaagatat,
wR=tatagaaa.
3. Hairpin. Pentru un ir de simboluri w, care poate fi descompus n patru subiruri w1w2w3w4 (unele dintre cele
patru siruri pot fi vide) prin operaia hairpin se obine: w1w2w3w4c(w1)R, dac w2=c(w4)R i lungimea lui w2 este
mai mare sau egal cu 1, sau c(w4)Rw1w2w3w4, dac w1=c(w3)R i lungimea lui w1 este mai mare sau egal cu 1.
Dac ambele condiii sunt verificate, oricare dintre cele dou iruri se poate obine.
n gradina Acolor a fost descoperit o specie de omizi cu sim artistic. Informaia genetic a omizilor
este codificat printr-o mulime S format din n iruri de simboluri din mulimea {a, c, g, t}. Mulimea S
este denumit mulime iniial. n evoluia omizilor, informaia genetic iniial a suferit o serie de
modificri. Pentru omizi, toate aceste modificri pot fi descrise prin aplicarea operaiei hairpin de un
numr arbitrar de ori asupra irurilor din mulimea iniial S.
Cerin: Date fiind cele n iruri din mulimea iniial S i o succesiune de m iruri de simboluri, s se decid care
dintre cele m iruri poate reprezenta codul genetic al unei omizi, cod obinut prin aplicarea unor operaii hairpin.
Date de intrare: Fiierul de intrare evo.in conine n+m+2 linii. Pe prima linie este scris numrul natural n
reprezentnd numrul de numrul de iruri din mulimea iniial S. Urmeaz n linii, pe fiecare linie fiind scris un ir
din mulimea S. Pe linia n+2 este scris numrul natural m, reprezentnd numrul de iruri care trebuie s fie
analizate. Pe urmtoarele m linii sunt scrise cele m iruri care trebuie analizate, cte un ir pe o linie.
Date de ieire: Fiierul de ieire evo.out va conine m linii, cte una pentru fiecare ir de analizat. Pe linia i se
va scrie cuvntul da, dac al i-lea ir dintre cele m iruri de analizat poate fi codul genetic al unei omizi, respectiv
cuvntul nu, n caz contrar.
Restricii i precizri
0 < n < 5, 0 < m < 1001
Lungimea unui ir din mulimea iniial S este mai mic dect 101.
Lungimea total a irurilor de analizat este mai mic dect 16001. Lungimea fiecrui ir de analizat este mai
mic dect 4001.
n 55% din teste lungimea maxim a unui ir de analizat este 700.
Memoria total disponibil este de 18MB din care 1MB pentru stiv.
Exemplu
evo.in evo.out
Explicaie
2 da Primul ir de analizat este gaaaat. Acesta poate fi obinut din gaaaat fra a aplica
acgtcg nu vreo operaie hairpin.
gaaaat da
Al doilea ir de analizat este gaaattc. Acesta nu poate fi obinut prin aplicarea
4 da
gaaaat operaiei hairpin asupra irurilor acgtcg sau gaaaat.
gaaaatcc Al treilea ir de analizat este gaaaattc. Acesta se obine aplicnd operaia hairpin o
gaaaattc singur dat asupra irului gaaaat (considernd w1=ga, w2=a, w3=aa, w4=t).
cgacgtcgtcg Al patrulea ir de analizat este cgacgtcgtcg. Acesta se poate obine din acgtcg
aplicnd de dou ori operaia hairpin (din acgtcg obinem cgacgtcg pentru
w1=ac, w2=ir vid, w3=gt, w4=cg, operaia de hairpin adugnd c(w4)R la nceputul
irului, i apoi din cgacgtcg obinem cgacgtcgtcg pentru w1=cga, w2=c, w3=gtc
i w4=g, operaia de hairpin adugnd c(w1)R la sfritul irului.
Timp maxim de execuie/test: 3 secunde
Baraj
Sursa: part.c, part.cpp, part.pas Ziua 1
Date de intrare: Fiierul de intrare part.in conine pe prima linie un numr natural k, reprezentnd numrul
de seturi de date din fiier. Urmeaz k grupe de linii, cte o grup pentru fiecare set de date. Grupa de linii
corespunztoare unui set este format dintr-o linie cu numerele a, b, n separate ntre ele prin cte un spaiu i
n linii cu cte ase numere ntregi separate prin spaii reprezentnd coordonatele vrfurilor (abscis
ordonat) celor n piese, cte o pies pe o linie.
Date de ieire: n fiierul part.out se vor scrie k linii, cte o linie pentru fiecare set de date. Pe linia i (i=1,
2, , k) se va scrie 1 dac triunghiurile din setul de date i formeaz o partiie a triunghiului desenat pe tabla
magnetic sau 0 n caz contrar.
Restricii
1 n 150
1 k 10
a, b sunt numere ntregi din intervalul [0, 31000]
Coordonatele vrfurilor pieselor sunt numere ntregi din intervalul [0, 31000].
Exemplu
part.in part.out Figura pentru setul 1 de date Figura pentru setul 2 de date
2 1 y y
20 10 4 0
0 5 0 10 10 5 T1
0 0 10 5 0 5 b T1
b
0 0 10 0 10 5 T2 T2
10 0 20 0 10 5 T3 T4
20 10 2 O a x O a x
0 0 0 10 10 5
0 0 20 0 20 10
Baraj
Sursa: cifru.c, cifru.cpp, cifru.pas Ziua 2
Cerin
Date fiind un mesaj necodificat i codificarea sa, determinai cifrul folosit (permutarea p i numrul d).
Date de intrare
Fiierul de intrare cifru.in conine pe prima linie numele naturale n i m, separate prin spaiu,
reprezentnd lungimea mesajului i respectiv numrul de litere din alfabetul solarian. Pe cea de a doua
linie este scris mesajul necodificat ca o succesiune de n numere cuprinse ntre 1 i m separate prin cte un
spaiu. Pe cea de a treia linie este scris mesajul codificat ca o succesiune de n numere cuprinse ntre 1 i m
separate prin cte un spaiu.
Date de ieire
Fiierul de ieire cifru.out va conine pe prima linie numrul natural d, reprezentnd numrul de poziii
cu care s-a realizat permutarea circular spre dreapta. Dac pentru d exist mai multe posibiliti se va
alege valoarea minim. Pe urmtoarea linie este descris permutarea p. Mai exact se vor scrie valorile
p(1), p(2), , p(m) separate prin cte un spaiu.
Restricii
n 100 000
m 9999
Mesajul conine fiecare numr natural din intervalul [1, m] cel puin o dat.
Pentru teste cu m 5 se acord 40 de puncte din care 20 pentru teste i cu n 2000.
Exemplu
cifru.in cifru.out
6 3 2
2 1 3 3 2 1 3 1 2
1 3 1 3 2 2
Baraj
Sursa: platou.c, platou.cpp, platou.pas Ziua 2
platou 100 puncte
Se consider un ir de 1048576 (2 ) elemente care sunt numere ntregi. Se definesc noiunile:
20
Baraj
Sursa: trasee.c, trasee.cpp, trasee.pas Ziua 2
Cerin
Cum eu nu m-am calificat la ONI, scriei un program care s m ajute s determin numrul maxim de trasee valide
disjuncte.
Date de intrare
Fiierul de intrare trasee.in conine pe prima linie patru numere naturale n, m, x i k separate prin cte un spaiu,
care reprezint numrul de orae, numrul de drumuri directe dintre orae, numrul oraului n care locuiesc i
respectiv numrul de orae aflate pe un traseu. Urmtoarele m linii conin cele m drumuri directe de pe hart, cte un
drum pe o linie. Fiecare drum direct este specificat prin dou numere naturale distincte cuprinse ntre 1 i n,
separate printr-un spaiu, reprezentnd oraele conectate de drumul respectiv.
Date de ieire
Fiierul de ieire trasee.out va conine o singur linie pe care va fi scris numrul maxim de trasee valide
disjuncte.
Restricii i precizri
1 n 200
1 x n
1 k n
ntre dou orae poate exista cel mult un drum direct. Drumurile sunt bidirecionale.
Exemplu
trasee.in trasee.out Explicaie
7 8 1 3 3 Oraul de plecare este oraul 1. Exist patru trasee valide care trec prin
1 3 exact 3 orae, plecnd din 1 (1-3-2, 1-3-5, 1-4-7, 1-6-7). Numrul maxim
2 3 de trasee valide disjuncte este 3. O soluie ar putea fi 1-3-2, 1-4-7, 1-6-7.
5 3
4 6 3 1
4 7
1 4 4
6 1 2 6
6 7 5 7
Cerin
Folosind informaiile departamentului de statistic, determinai numrul de produse i cele 2 produse din cadrul
fiecrei oferte.
Date de intrare
Prima linie a fiierului de intrare promo.in conine numerele ntregi M i K, separate printr-un spaiu.
Urmtoarele K linii conin cte 2 numere ntregi A i B, separate printr-un spatiu, avnd semnificaia c oferta cu
numrul A i cea cu numrul B au un produs n comun.
Date de ieire
Pe prima linie a fiierului de ieire promo.out vei afia numrul ntreg N, reprezentnd numrul de produse.
Urmtoarele M linii trebuie s conin cte 2 numere ntregi, separate printr-un spaiu. A i-a linie dintre aceste M
linii va conine numerele produselor din care este format a i-a ofert.
Restrictii si precizari
1 M 2007
0 K 100000
Numrul de produse determinat trebuie s fie cel mult egal cu 2*M.
Se garanteaz existena cel puin a unei soluii. Dac exist mai multe soluii, putei afia oricare dintre ele.
Exemplu
promo.in promo.out
11 7 17
1 4 1 2
4 7 3 4
7 1 5 6
2 5 1 7
5 8 3 8
8 2 9 10
10 11 1 11
3 12
13 14
15 16
15 17
Memorie total disponibil: 16 Mb din care 1 Mb pentru stiv.
Timp maxim de execuie : 0.4 secunde/test
Cerin
Scriei un program pentru Zhrel care s determine pentru fiecare dintre cele M puncte de pe axa OX, care este
distana la cel mai apropiat punct dintre cele N desenate pe hrtie.
Date de intrare
Fiierul de intrare puncte.in conine pe prima linie numerele naturale N, M separate prin spaii. Fiecare dintre
urmtoarele N linii conine cte o pereche de numere naturale nenule x y, separate prin spaii, reprezentnd
coordonatele celor N puncte (n ordinea abscis, ordonat). Fiecare dintre urmtoarele M linii conine cte un numr
natural x, reprezentnd abscisele (coordonatele pe axa OX) ale celor M puncte.
Date de ieire
Fiierul de ieire puncte.out va conine M linii. Pe linia i va fi scris un numr natural reprezentnd distana la cel
mai apropiat punct dintre cele N de pe hrtie pentru al i-lea punct de pe axa OX (considernd ordinea punctelor din
fiierul de intrare).
Restricii i precizri
1 N 100 000
1 M 200 000
Toate coordonatele din fiierul de intrare sunt numere naturale din intervalul [1,109]
Cele N puncte din fiierul de intrare sunt sortate dup coordonata x cresctor, iar n cazul n care dou puncte au
aceeai abscis, ele sunt ordonate cresctor dup coordonata y.
Pentru 50% din teste N90000 i M150000.
Exemplu
puncte.in puncte.out Explicaie Figura
3 2 2 Pe hrtie au fost desenate 3 puncte, avnd
1 1 5 coordonatele (1,1), (5,1), respectiv (10,2). Pe
5 1 axa OX se afl 2 puncte, avnd abscisa 2,
10 2 respectiv 7.
2 Distana minim dintre punctul de pe axa OX de
7
abscis 2 este 2 (cel mai apropiat punct fiind cel
de coordonate (1,1)).
Distana minim dintre punctul de pe axa OX de
abscis 7 este 5 (cel mai apropiat punct fiind cel
de coordonate (5,1)).
Date de ieire
Fiierul de ieire cover.out va conine o singur linie pe care va fi scris un numr natural reprezentnd costul
minim al unei acoperiri.
Restricii si precizri
1 N 60 000
1 L 1 000 000
0 ci 1024, pentru orice 1 i L
Pentru 40% din teste N 1000 i L 10000.
Exemple
cover.in cover.out Explicaie
2 5 9 Se construiete acoperirea {3} care are costul 9. Elementul 3
100 5 9 6 90 aparine ambelor intervale date n fiierul de intrare.
1 3 Exist i alte acoperiri posibile de exemplu {2, 4} dar costul
3 5
acesteia este 11 care nu este minim.