COLEGIUL NAȚIONAL „MIHAI VITEAZUL” TURDA
CONCURSUL INTERJUDEŢEAN DE MATEMATICĂ ŞI INFORMATICĂ
„MARIAN ŢARINĂ”
Ediţia a XIX-a, 29-30 MARTIE 2019
Gabriel Mircea
Clasa a IX-a
Problema 1 – baschet 100p
N prieteni pasionați de colecționarea abțibildurilor cu baschetbaliști se întâlnesc pentru a realiza echipa
ideală cu abțibilduri (fiecare dispunând de K abțibilduri) pe care le are în colecție. Principiul e simplu:
Echipa ideală de baschet va trebui să ocupe 5 posturi:
fundaș (1),
shooter (2),
atacant (3),
atacant de pătrundere (4),
centru (5).
Fiecare post trebuie ocupat cu cel mai bun baschetbalist care joacă pe acel post care se află în colecțiile
tuturor celor N prieteni. (Ideea este ca fiecare dintre prieteni să poată realiza echipa ideală cu abțibildurile
pe care le are în colecție.)
Date de intrare
Fişierul de intrare baschet.in conţine:
pe prima linie două numere N și K reprezentând numărul de prieteni și, respectiv, numărul de
abțibilduri pe care le are fiecare dintre ei;
pe fiecare dintre următoarele N*K linii se găsesc câte trei numere separate prin spațiu Dij Pij Vij
reprezentând identificatorul unui jucător (un număr unic între 1 și 1000000000), postul pe care
acesta joacă (un numar între 1 și 5, vezi mai sus) și valoarea lui (un număr între 1 și
1000000000); liniile sunt grupate astfel încât primele K linii reprezintă abțibildurile deținute de
primul prieten, următoarele K linii cele deținute de cel de-al doilea etc.
Date de ieşire
Fişierul de ieşire baschet.out va conţine un șir de 5 întregi reprezentând numerele unice ale
membrilor echipei ideale în ordinea posturilor, separate prin spatiu.
Restricţii şi precizări
1 ≤ N ≤ 100
1 ≤ K ≤ 100000
În toate aparițiile unui baschetbalist din fișierul de intrare el va avea același identificator, același
post și aceeași valoare.
Nu există doi baschetbaliști cu aceeași valoare.
Un abțibild se poate regăsi cel mult o dată în colecția unui prieten.
Se acordă 10 puncte din oficiu.
Exemplu
baschet.in baschet.out
3
6
20 1 10
15 2 5
18 2 8
21 3 11
25 4 5
27 5 17
19 3 9
15 2 5
21 3 11
25 4 5
27 5 17
20 1 10
27 5 17
21 3 11
15 2 5
25 4 5
20 1 10
14 4 4
20 15 21 25 27
Timp maxim de execuţie/test: 1 secundă.
Total memorie disponibilă 6 MB din care pentru stivă 2 MB.
Dimensiunea maximă a sursei: 5 KB.
Sursa: baschet.cpp sau baschet.c sau baschet.pas.
COLEGIUL NAȚIONAL „MIHAI VITEAZUL” TURDA
CONCURSUL INTERJUDEŢEAN DE MATEMATICĂ ŞI INFORMATICĂ
„MARIAN ŢARINĂ”
Ediţia a XIX-a, 29-30 MARTIE 2019
Radu Lupșa
Clasa a IX-a
Problema 2 – hexagon 100p
Se dă un pavaj din plăci hexagonale identice.
Pe acest pavaj hexagonal, se definesc zone hexagonale
astfel: zona hexagonală de centru o anumită placă și de
rază d este formată din acele plăci aflate la distanță cel
mult d față de placa centrală, mergând de la o placă la
vecina ei. Astfel, pentru ρ=0, avem doar placa centrală;
pentru ρ=1, avem 7 plăci (placa centrală plus vecinele
directe); pentru ρ=2, avem 19 plăci, și așa mai departe.
Întregul pavaj este o zonă hexagonală de rază R,
cunoscută.
Pentru a identifica o placă, vom folosi coordonate X Y
întregi definite astfel:
placa centrală a întregului pavaj este de
coordonate 0 0
plăcile se consideră cu două laturi opuse verticale
coordonata Y este rândul - coordonate pozitive
pentru direcția în sus
coordonata X merge pe orizontală spre dreapta; pentru fiecare rând, X=0 este placa de pe linia
oblică stânga-jos spre dreapta-sus care face un unghi de 60 grade cu orizontala
A se vedea în figura alăturată coordonatele hexagoanelor și coordonatele lor față de placa centrală.
Anumite plăci lipsesc din pavaj. Se dorește să se determine dacă anumite zone hexagonale sunt intacte
sau au plăci lipsă.
Date de intrare
Fişierul de intrare hexagon.in conţine:
pe prima linie două numere naturale R și N, reprezentând raza zonei hexagonale pavate și numărul
de zone hexagoanale despre care se cere să se determine dacă sunt intacte;
urmatoarele 2*R+1 linii conțin descrierea zonei hexagonale date, și sunt formate din numere 0
sau 1, 1 reprezentând pavaj intact și 0 reprezentând lipsa unei plăci. Prima dintre aceste linii are
R+1 numere, următoarea R+2, ..., a R+1-a are 2*R+1 numere, următoarea 2*R, ..., în final, linia a
2*R+1-a are din nou R+1 numere;
următoarele N linii conțin câte trei numere: Xi Yi Ri, reprezentând coordonatele centrului și raza
câte unei zone hexagonale.
Date de ieşire
În fișierul hexagon.out se va scrie pe N linii, câte un număr, 0 dacă zona hexagonală corespunzătoare
din fișierul de intrare conține cel puțin o placă lipsă și 1 dacă conține doar plăci intacte.
Restricţii şi precizări
1 ≤ R ≤ 300
1 ≤ N ≤ 100000
Zonele de testat se încadrează în zona pavată și au raze mai mari sau egale cu 0.
Liniile din fișierul de intrare pot începe cu spații.
Se acordă 10 puncte din oficiu.
Exemplu
hexagon.in hexagon.out
5 6
1 1 1 1 1 1
0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 1 1 1 0 1 1 0 1
1 1 1 1 0 0 1 0 1 0
1 1 1 1 1 0 1 1 1 1 1
1 1 1 1 0 1 1 0 1 0
1 1 1 1 0 1 0 1 0
1 1 1 0 1 0 1 0
1 0 0 0 0 0 0
0 1 0 1 0 1
-3 0 2
-1 -2 1
-1 -3 1
-1 -1 0
1 1 0
2 0 1
1
1
0
1
1
0
Timp maxim de execuţie/test: 1 secundă.
Total memorie disponibilă 5 MB din care pentru stivă 2 MB.
Dimensiunea maximă a sursei: 5 KB.
Sursa: hexagon.cpp sau hexagon.c sau hexagon.pas.
COLEGIUL NAȚIONAL „MIHAI VITEAZUL” TURDA
CONCURSUL INTERJUDEŢEAN DE MATEMATICĂ ŞI INFORMATICĂ
„MARIAN ŢARINĂ”
Ediţia a XIX-a, 29-30 MARTIE 2019
Florin Miron
Clasa a IX-a
Problema 3 – zone 100p
Vasile, mare gospodar, se pregătește de semănat. Terenul agricol pe care îl deține este de formă
dreptunghiulară și este parcelat sub forma unui caroiaj, fiecare parcelă de dimensiuni elementare putând fi
semănată sau nu. Făcându-și niște calcule, Vasile decide ca în acest an să semene doar o zonă de arie
fixată a terenului agricol pe care îl deține cu proprietatea că această zonă este, la rândul ei, de formă
dreptunghiulară, cu laturile paralele cu marginile terenului și formată exclusiv din parcele care pot fi
semănate.
Cerinţă Cunoscându-se dimensiunile terenului, aria zonei ce urmează a fi semănată și, pentru fiecare parcelă în
parte, dacă poate fi semănată sau nu, să se determine în câte moduri poate Vasile să stabilească zona pe
care o va semăna.
Date de intrare
Fişierul de intrare zone.in conţine pe prima linie, separate prin câte un spațiu, trei numere naturale n, m
și a, reprezentând, în ordine, dimensiunile terenului și aria zonei care se dorește a fi semănată.
Fiecare dintre următoarele n linii ale fișierului conține, separate prin câte un spațiu, câte m valori de 0 și 1
reprezentând pentru fiecare parcelă în parte dacă poate fi semănată (0) sau nu (1).
Date de ieşire
Fişierul de ieşire zone.out va conţine o singură linie pe care va fi scris numărul de moduri în care
poate fi stabilită zona ce va fi semănată în condițiile precizate.
Restricţii şi precizări
1 ≤ n, m ≤ 800
1 ≤ a ≤ n*m
Se acordă 10 puncte din oficiu.
Exemplu
zone.in zone.out Explicaţie
4 6 4
1 0 0 0 0 0
0 0 1 0 0 0
0 0 1 0 0 1
0 0 0 0 0 0
14
Sunt 14 zone dreptunghiulare de arie 4 formate doar
din parcele care pot fi semănate.
Timp maxim de execuţie/test: 1 secundă.
Total memorie disponibilă 6 MB din care pentru stivă 2 MB.
Dimensiunea maximă a sursei: 5 KB.
Sursa: zone.cpp sau zone.c sau zone.pas.
COLEGIUL NAȚIONAL „MIHAI VITEAZUL” TURDA
CONCURSUL INTERJUDEŢEAN DE MATEMATICĂ ŞI INFORMATICĂ
„MARIAN ŢARINĂ”
Ediţia a XIX-a, 29-30 MARTIE 2019
Florin Miron
Clasa a X-a
Problema 1 – anagrame 100p
Se consideră două șiruri de caractere formate doar din litere mici ale alfabetului englez. Cele două șiruri
sunt anagrame dacă au aceeași lungime și fiecare literă a alfabetului apare de același număr de ori atât
într-un șir, cât și în celălalt șir.
Un subșir al unui șir este format din elemente ale șirului situate nu neapărat pe poziții succesive, însă
preluate în ordinea în care apar în șir.
Cerinţă Dându-se două șiruri, să se determine numărul de subșiruri ale primului șir care reprezintă anagrame ale
celui de-al doilea șir modulo 100003.
Date de intrare
Fişierul de intrare anagrame.in conţine pe prima linie primul șir de caractere A. Pe cea de-a doua linie
a fişierului se găseşte cel de-al doilea șir de caractere B.
Date de ieşire
Fişierul de ieşire anagrame.out va conţine o singură linie pe care va fi scris numărul de subșiruri ale
șirului A care reprezintă anagrame ale șirului B modulo 100003.
Restricţii şi precizări
1 ≤ lungime (B) ≤ lungime (A) ≤ 100000
Toate caracterele din cele două șiruri sunt litere mici ale alfabetului englez.
Se acordă 10 puncte din oficiu.
Exemplu
anagrame.in anagrame.out Explicaţie
abacdab
abac
6
Cele 6 subșiruri anagrame (date prin intermediul
indicilor numerotați de la 1) sunt:
1 2 3 4
1 2 4 6
1 3 4 7
1 4 6 7
2 3 4 6
3 4 6 7
Timp maxim de execuţie/test: 0.1 secunde.
Total memorie disponibilă 2 MB din care pentru stivă 1 MB.
Dimensiunea maximă a sursei: 5 KB.
Sursa: anagrame.cpp sau anagrame.c sau anagrame.pas.
COLEGIUL NAȚIONAL „MIHAI VITEAZUL” TURDA
CONCURSUL INTERJUDEŢEAN DE MATEMATICĂ ŞI INFORMATICĂ
„MARIAN ŢARINĂ”
Ediţia a XIX-a, 29-30 MARTIE 2019
Gabriel Mircea
Clasa a X-a
Problema 2 – loterie 100p
S-a inventat un nou joc de loterie având următoarele reguli:
Avem la dispozitie 1000000 de bile numerotate unic de la 1 la 1000000. Mai avem un tub vertical în
care pot fi stivuite oricâte bile.
Inițial tubul este gol.
Angajații loteriei pot face una din două operații posibile:
1. Pot adăuga K bile în tub, care vor fi așezate una peste cealaltă, deasupra celor deja existente.
2. Pot scoate cele mai de sus M bile, însă doar dacă există cel puțin M bile în tub.
După fiecare astfel de operație, se verifică dacă între bila cu numărul minim și bila cu numărul maxim din
tub se află exact L bile, excluzându-le pe cele două. În acest caz, jocul se încheie și bilele câștigătoare
sunt cele L bile astfel desemnate, în ordine, de sus în jos.
Date de intrare
Fişierul de intrare loterie.in conţine:
pe prima linie din fișier, numărul L de bile care trebuie extrase
fiecare din următoarele linii reprezintă o operație astfel:
pentru operația de introducere: numărul 1 urmat de numărul K de bile introduse, urmat de
numerele de pe cele K bile
pentru operația de extragere: numărul 2 urmat de numărul M de bile extrase
Date de ieşire
În fișierul loterie.out se vor scrie pe o singură linie cele L numere reprezentând bilele extrase, în
ordinea extragerii acestora.
Restricţii şi precizări
1 ≤ L ≤ 100000
Pentru fiecare operație, 1 ≤ M ≤ 100000 sau, respectiv, 1 ≤ K ≤ 100000.
Se garantează că jocul se termină cel târziu prin ultima operație din fișierul de intrare.
Numărul total de bile procesate în timpul operațiilor pe stivă (adică atât numărul total de bile
introduse, cât și numărul de bile extrase prin operațiile corespunzătoare) nu poate depăși 100000.
Se acordă 10 puncte din oficiu.
Exemplu
loterie.in loterie.out Explicaţie
3
1 5 1 10 2 3 4
2 3
1 3 5 4 11
2 1
2 3
4 5 10
Conținutul tubului, de jos în sus, după fiecare operație este:
1 10 2 3 4
1 10
1 10 5 4 11
În acest moment sunt exact 3 bile între minim (1) și maxim
(11) astfel ca ultimele două operații nu se mai efectuează.
Timp maxim de execuţie/test: 0.3 secunde.
Total memorie disponibilă 2 MB din care pentru stivă 1 MB.
Dimensiunea maximă a sursei: 5 KB.
Sursa: loterie.cpp sau loterie.c sau loterie.pas.
COLEGIUL NAȚIONAL „MIHAI VITEAZUL” TURDA
CONCURSUL INTERJUDEŢEAN DE MATEMATICĂ ŞI INFORMATICĂ
„MARIAN ŢARINĂ”
Ediţia a XIX-a, 29-30 MARTIE 2019
Radu Lupșa
Clasa a X-a
Problema 3 – marte 100p
Pentru explorarea unei zone muntoase a planetei Marte, cercetătorii de la CNMV au realizat un robot
capabil să coboare în mod repetat utilizând o parașută. Deoarece robotul nu poate să urce, ei sunt
interesați să planifice un traseu descendent cât mai lung, pentru a putea culege cât mai multe informații.
Ajutați-i să găsească un astfel de traseu.
Terenul este un pătrat de dimensiuni NxN. Fiecare pătrățel 1x1 are o anumită altitudine, cunoscută.
Robotul își poate începe explorarea din orice pătrățel. Odată începută explorarea, robotul poate să treacă
în orice pătrățel vecin pe linie, coloană sau diagonală, dar numai dacă altitudinea acelui pătrățel este strict
mai mică decât altitudinea pătrățelului curent.
Date de intrare
Fişierul de intrare marte.in conţine:
pe prima linie, numărul natural N reprezentând dimensiunea laturii terenului;
pe următoarele N linii, câte N numere naturale reprezentând altitudinile pătrățelelor de pe linia
respectivă.
Date de ieşire
În fișierul marte.out se va descrie cel mai lung traseu posibil, astfel:
pentru fiecare pătrățel vizitat, numărul liniei și numărul coloanei acelui pătrățel (ambele
numerotate de la 1 la N);
la final, o linie conținând numerele 0 0.
Restricţii şi precizări
1 ≤ N ≤ 300
Altitudinile sunt cuprinse între 1 și 1000000000.
În cazul existenței mai multor soluții de lungime maximă, se va afișa oricare dintre ele.
Se acordă 10 puncte din oficiu.
Exemplu
marte.in marte.out
5
1 2 3 2 1
3 9 5 1 1
2 2 6 2 2
2 2 8 7 2
2 2 2 2 2
4 3
4 4
3 3
2 3
1 3
1 2
1 1
0 0
Timp maxim de execuţie/test: 0.1 secunde.
Total memorie disponibilă 8 MB din care pentru stivă 2 MB.
Dimensiunea maximă a sursei: 5 KB.
Sursa: marte.cpp sau marte.c sau marte.pas.
COLEGIUL NAȚIONAL „MIHAI VITEAZUL” TURDA
CONCURSUL INTERJUDEŢEAN DE MATEMATICĂ ŞI INFORMATICĂ
„MARIAN ŢARINĂ”
Ediţia a XIX-a, 29-30 MARTIE 2019
Radu Lupșa
Clasele XI-XII
Problema 1 – becuri 100p
În castelul CNMV Gigel a descoperit niște becuri și butoane care le comandă. El a observat că fiecare
buton comandă anumite becuri. La fiecare apăsare, butonul schimbă starea acelor becuri. Un bec poate fi
controlat de mai multe butoane.
Gigel dorește acum să afle în câte moduri distincte poate aprinde toate becurile plecând din starea cu toate
becurile stinse. Evident, ordinea de acționare a butoanelor nu influențează rezultatul, iar dacă apasă
același buton de două ori, efectul este ca și atunci când nu apasă deloc acel buton. Ca urmare, Gigel vrea
să afle câte soluții distincte există dacă fiecare buton poate fi apasat cel mult o dată și butoanele se apasă
doar în ordine crescătoare a numerelor lor de ordine.
Date de intrare
Fişierul de intrare becuri.in conţine:
pe prima linie, două numere M și N reprezentând numărul de becuri și numărul de întrerupătoare;
fiecare din următoarele N linii descrie becurile controlate de câte un întrerupător: primul număr
reprezintă numărul de becuri controlate, iar următoarele numere reprezintă numerele de ordine ale
becurilor controlate. Becurile sunt numerotate de la 0 la M-1.
Date de ieşire
În fișierul becuri.out se va scrie, pe o singură linie, numărul de soluții modulo 2019.
Restricţii şi precizări
1 ≤ M ≤ 500
1 ≤ N ≤ 500
Se garantează existența cel puțin a unei soluții pentru aprinderea becurilor.
Se acordă 10 puncte din oficiu.
Exemplu
becuri.in becuri.out Explicație
3 4
2 0 2
2 0 1
2 1 2
3 0 1 2
2
Sunt 2 soluții: butoanele 0 1 2 3 sau
numai butonul 3.
Timp maxim de execuţie/test: 3 secunde.
Total memorie disponibilă 8 MB din care pentru stivă 2 MB.
Dimensiunea maximă a sursei: 5 KB.
Sursa: becuri.cpp sau becuri.c sau becuri.pas.
COLEGIUL NAȚIONAL „MIHAI VITEAZUL” TURDA
CONCURSUL INTERJUDEŢEAN DE MATEMATICĂ ŞI INFORMATICĂ
„MARIAN ŢARINĂ”
Ediţia a XIX-a, 29-30 MARTIE 2019
Gabriel Mircea
Clasele XI-XII
Problema 2 – cuvânt 100p
Doi prieteni au inventat un nou joc de cuvinte, colaborativ. Fiecare jucator începe jocul cu un teanc de
cărți care conțin fiecare câte o literă.
Jucătorii vor realiza două rânduri orizontale de cărți, de lungimi egale, fiecare rând fiind realizat doar cu
cărțile unuia dintre jucători și cu cărți joker.
Fiecare jucător este obligat să pună cărțile în ordinea în care sunt acestea în pachet, însă poate să adauge
oricâți jokeri în orice poziții, cu singura constrângere că ambii jucători nu pot pune amândoi joker pe
aceeași poziție.
Odată terminată o tură de joc, jucătorii își vor calcula scorul obținut astfel:
Pentru fiecare pereche de cărți de pe aceeași poziție:
vor adăuga scorul X dacă literele coincid;
vor adăuga scorul Y dacă literele nu coincid;
vor adăuga scorul Z dacă una dintre cărți este joker.
Cerinţă Cunoscând conținutul celor două teancuri, găsiți scorul maxim ce se poate obține.
Date de intrare
Fişierul de intrare cuvant.in conţine:
pe prima linie, literele de pe cărțile din teancul primului jucător fără spații;
pe a doua linie, literele de pe cărțile din teancul celui de-al doilea jucător fără spații;
pe următoarele 3 linii, numerele X, Y și respectiv Z.
Date de ieşire
În fișierul cuvant.out se va scrie, pe o singură linie, scorul maxim ce poate fi obținut.
Restricţii şi precizări
Numărul de cărți din fiecare teanc este cuprins între 1 și 5000.
0 < X ≤ 100
-50 < Y ≤ 50
-50 < Z ≤ 50
X ≥ Y ≥ Z
Se acordă 10 puncte din oficiu.
Exemplu
cuvant.in cuvant.out Explicație
GCATGCU
GATTACA
1
-1
-1
0
Șirurile pot fi GCATG*CU
G*ATTACA
*=joker
Timp maxim de execuţie/test: 1 secundă.
Total memorie disponibilă 8 MB din care pentru stivă 2 MB.
Dimensiunea maximă a sursei: 5 KB.
Sursa: cuvant.cpp sau cuvant.c sau cuvant.pas.
COLEGIUL NAȚIONAL „MIHAI VITEAZUL” TURDA
CONCURSUL INTERJUDEŢEAN DE MATEMATICĂ ŞI INFORMATICĂ
„MARIAN ŢARINĂ”
Ediţia a XIX-a, 29-30 MARTIE 2019
Florin Miron
Clasele XI-XII
Problema 3 – șir 100p
O succesiune de elemente alăturate dintr-un șir reprezintă o secvență a acestuia.
Se consideră un șir de lungime n care reprezintă o permutare a mulțimii formate din numerele naturale de
la 1 la n. Asupra acestui șir se realizează, repetat și într-o ordine oarecare, una din operațiile:
1. interschimbarea valorilor a două elemente ale șirului;
2. determinarea valorii minime dintr-o secvență a șirului;
3. determinarea valorii maxime dintr-o secvență a șirului.
Cerinţă Cunoscându-se dimensiunea șirului, valorile inițiale ale elementelor șirului și operațiile efectuate, să se
determine pentru fiecare operație în parte rezultatul acesteia.
Date de intrare
Fişierul de intrare sir.in conţine pe prima linie, separate prin câte un spațiu, două numere naturale n și
k, reprezentând, în ordine, dimensiunea șirului și numărul de operații efectuate.
Cea de-a doua linie a fișierului conține, separate prin câte un spațiu, n valori distincte din mulțimea
numerelor naturale de la 1 la n, reprezentând valorile inițiale ale elementelor șirului.
Valorile de pe fiecare dintre ultimele k linii ale fișierului descriu operația efectuată; o astfel de linie
conține, separate prin câte un spațiu, trei valori de forma o a b cu următoarea semnificație:
dacă o=1 operația este de primul tip, iar următoarele două valori reprezintă indecșii elementelor
care se vor interschimba;
dacă o=2 operația este de al doilea tip, iar următoarele două valori reprezintă indecșii primului,
respectiv, ultimului element din secvența care va fi consultată pentru stabilirea valorii minime;
dacă o=3 operația este de al doilea tip, iar următoarele două valori reprezintă indecșii primului,
respectiv, ultimului element din secvența care va fi consultată pentru stabilirea valorii maxime.
Date de ieşire
Fişierul de ieşire sir.out va conţine k linii; pe fiecare dintre acestea va fi scrisă o singură valoare
reprezentând rezultatul operației corespunzătoare din fișierul de intrare: 0 dacă operația este de primul tip
sau o valoare reprezentând rezultatul consultării secvenței dacă operația este de al doilea tip sau de al
treilea tip.
Restricţii şi precizări
3 ≤ n ≤ 100000
1 ≤ k ≤ n
1 ≤ a ≤ b ≤ n
Se consideră că elementele șirului sunt indexate de la 1.
Se acordă 10 puncte din oficiu.
Exemplu
sir.in sir.out
7 4
1 3 2 6 5 7 4
2 1 3
1 2 3
2 2 4
3 2 5
1
0
2
6
Timp maxim de execuţie/test: 1 secundă.
Total memorie disponibilă 16 MB din care pentru stivă 2 MB.
Dimensiunea maximă a sursei: 5 KB.
Sursa: sir.cpp sau sir.c sau sir.pas.