.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » antitero

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
antitero


Timp maxim de execuţie / test:
1.2s
Memorie totala disponibilă / stivă:
2MB / 1MB

Într-o clădire cu h etaje sunt deţinuţi, la parter, câţiva prizonieri de către T terorişti. Fiecare etaj al clădirii are m x n camere identice. Fiecare cameră are un cod numeric (nu neapărat unic) exprimat printr-un număr din intervalul [0,255]. O trupă antitero formată din K specialişti, trebuie să elibereze prizonierii. Trupa antitero este paraşutată pe clădire şi încearcă să ajungă la parter. Se cunoaşte locul (x, y) unde fiecare membru al trupei a aterizat pe acoperiş. Greutatea fiecărui membru al trupei este exprimată în unităţi din intervalul [1,255]. Un membru al trupei poate trece ″în jos″ printr-o cameră a clădirii doar dacă ″greutatea lui trece prin camera respectivă″, conform următoarei definiţii.

Definiţie: Spunem că ″a trece prin b″ (a>>b) dacă, în reprezentare binară, numărul de cifre 1 a lui a este mai mic sau egal cu numărul de cifre 1 a lui b şi cifrele 1 ale lui a sunt comune cu unele cifre 1 ale lui b.
Exemplu: ″44 trece prin 174″ (44>>174) deoarece
44 = 00101100
174 = 10101110
Pentru detectarea unei camere prin care să poată trece, un membru al trupei de komando se poate, eventual, deplasa cu un ″pas″ în cele 8 direcţii alăturate poziţiei curente în care a ajuns prin aterizare sau trecerea ″în jos″. Prin ″pas″-ul respectiv se ajunge la una din cele 8 camere vecine. Prizonierii pot fi eliberaţi doar dacă la parter ajung minim T membri ai trupei antitero.

Cerinţă

Să se determine numărul de membri ai trupei antitero care pot să ajungă la parter.

Date de intrare

Fişierul de intrare antitero.in are structura următoare: pe prima linie valorile m, n, h, K, T despărţite prin câte un spaţiu, cu semnificaţiile descrise mai sus; următoarele h linii reprezintă codurile celor m x n camere ale unui etaj, despărţite prin câte un spaţiu; ultimele K linii ale fişierului conţin greutatea şi coordonatele x şi y ale poziţiilor de aterizare pe acoperiş ale celor K membri ai trupei antitero, pentru fiecare pe câte o linie, despărţite prin câte un spaţiu:
m n h K T
c111 c112 ... c11n c121 c122 ... c12n ... c1m1 c1m2 ... c1mn
c211 c212 ... c21n c221 c222 ... c22n ... c2m1 c2m2 ... c2mn
...
ch11 ch12 ... ch1n ch21 ch22 ... ch2n ... chm1 chm2 ... chmn
G1 x1 y1
G2 x2 y2
...
GK xK yK

Date de ieşire

Fişierul de ieşire antitero.out va conţine o singură linie pe care va fi scris numărul de membri ai trupei antitero ajunşi la parter.

Restricţii

2 ≤ m,n,h ≤ 35
1 ≤ xi ≤ m
1 ≤ yi ≤ n
1 ≤ T, K, Gi ≤ 255
0 ≤ cijk ≤ 255
• Toate valorile sunt întregi.

Exemple

antitero.inantitero.out
5 5 5 3 2 0 0 0 0 0 0 0 33 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 44 2 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 2 22 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66 2 0 0 0 0 0 7 0 15 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 1 2 2 2 3 3 3 4 4 2

autor: Prof. Marinel Şerban
propunător: Prof. Emanuela Cerchez
Colegiul Naţional ″Emil Racoviţă″
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la ONI 2000: arbore
De acelaşi autor: premii, finala, fractii, trei, manevre, nrcuv, an, vopsea, opmat, tramvai, bipal, kpal, sarpe, replace, factori, barca, perechi, grupe, cod, reactii, factura, decript, trenuri, holo, cifre, firma, tribile, mesaj, tricouri, pajura, monede, programs, fry, repeat, red, pavaj, bacan, nrbinar, invest, cutie2, loc, depou, nr3, zid, felinare, sir3, sqr, carte, labirint, stea, count, evaluare, super, schimb, zaruri, vectori, spirala, desen1, rima, ceas1, romane, sms, bac, excursia, joc7, furnici, munte1, cezar, marcare, excursie1, culmi, sume1, schi, nr4, fractie, cod3, medii, tren3, top, sant1, imagine, ocr, perfect, pluton, reforma, alee, ceas2, paritate, borcane, aranjare, comoara1, culmi1, reactivi, submult, sablon1, sir8, sume2, dansatori, smith, tom, matriosca, asociativ, control1, calorii, immortal, concat, mat, cubinvers, mine, divizori, cheie, stelar, joct, minmax, cladire, adunscad, razboi, ore, oras1, sumprod, prisme, operatii1, lgdrum, unupatru, chibrituri, extraprime, prieten, rebus1, grindina, opmult, betisoare, clase, pagini, ornament, ordine, spioni1
Despre backtracking: acop, bipal, magic2, vagoane, friends, tricouri, festival, numar, pento, ro, jobs, onu2, sir3, cai1, labirint, dans, ham, sudoku, caramele, linie, puncte, castel, excursia, joc7, pattern, avere, paianjen, medii, monkey, scara1, numere8, banda1, spirala1, cofetar, gradina, placa, smin, jucarii, immortal, concat, cubinvers, codif, izvor, avioane, jb, prisme, triburi1, genab, dineu, ornament, virgule
Despre recursivitate: tren, mere, chimie, sarpe, soldati, formule, infinit, compress, ploaia, cartoane, sub, metro, windows, lacuri, apel, maxq, pav, joc11, paianjen, suma2, monkey, csir, lsort, imagine, dir, desert, echitabil, rez, logic, gradina, links, dreptunghiuri, expresie1, cumpanit, reziston, sablon3
Despre fill: rebus, sarpe, insule, lacuri, zuzu, joc11, gradina, dreptunghiuri, drenaj, fillmat, parcela, acces, tsunami, betasah, zona, zone, taxa, foto, ferma1, robotzi
surse trimise | ajutor