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

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


Timp maxim de execuţie/test:
0.7 secunde
Memorie totală disponibilă/stivă:
16MB/2 MB

Pe o platformă dreptunghiulară sunt aşezate m*n cubuleţe pe m linii şi n coloane. Fiecare cubuleţ are aceeaşi structură: o faţă conţine valoarea 1,  faţa opusă ei conţine valoarea 2, iar celelalte patru feţe sunt etichetate cu valoarea 0.
Pentru memorarea aşezării unui cubuleţ vom folosi o matrice cu 3 linii şi 3 coloane, în care elementului din mijloc îi corespunde numărului de pe faţa de sus (singura faţă vizibilă când cubul este aşezat pe platformă), iar cele patru feţe alăturate corespund elementelor din stânga, sus, dreapta şi jos. Să observăm în figurile de mai jos, că elementul cel mai de jos al cubuleţului nu aparţine matricei (această valoare se poate deduce cu uşurinţă). Valorile din cele patru colţuri ale matricei (cele colorate cu gri) au valoarea 0, şi sunt irelevante pentru problemă.

Dacă asupra cubuleţului din figura 1 efectuăm o rotire de 90 de grade înapoi, obţinem cubuleţul din figura 2. Acelaşi cub dacă se roteşte cu 90 de grade spre stânga, obţinem cubuleţul din figura 3, iar dacă am aplica o rotire de 180 de grade, am obţine cubuleţul din figura 4.

Cele m*n cubuleţe sunt aşezate „cot la cot” pe platforma dreptunghiulară, feţele vizibile fiind doar cele de sus. Fiind în această formaţie, noi nu avem acces la fiecare cubuleţ în parte, însă putem opera asupra unei linii cu numărul de ordine lin sau asupra unei coloane cu numărul de ordine col în următoarele 6 moduri:

  • cuburile de pe o linie lin se rotesc cu 90 de grade înainte (se codifică cu L lin 1),
  • cuburile de pe o linie lin se rotesc cu 90 de grade înapoi (se codifică cu L lin -1),
  • cuburile de pe o linie lin se rotesc cu 180 de grade (se codifică cu L lin 2),
  • cuburile de pe o coloană col se rotesc cu 90 de grade la stânga (C col -1),
  • cuburile de pe o coloană col se rotesc cu 90 de grade la dreapta (C col 1),
  • cuburile de pe o coloană col se rotesc cu 180 de grade (C col 2).

Cerinţă

Cunoscând numărul de linii m, numărul de coloane n şi o valoare x din mulţimea {0, 1, 2}, respectiv aşezarea cubuleţelor pe platformă, se cere ca prin operaţii asupra liniilor şi coloanelor să se rotească toate cuburile astfel ca faţa vizibilă a lor să conţină numărul x.

Date de intrare

Fisierul cubulete.in contine pe prima linie trei valori  m, n şi x, având semnificaţiile de mai sus, separate prin spaţiu. Următoarele 3m linii conţin câte 3n numere separate prin spaţiu, reprezentând cele m*n cubuleţe aşezate pe m linii şi n coloane prin matrice de dimensiuni 3x3.

Date de ieşire

Fişierul cubulete.out va conţine pe fiecare rând câte o operaţie asupra unei linii lin sau coloane col în ordinea efectuării lor, din cele 6 variante:
L lin -1
L lin 1
L lin 2
C col -1
C col 1
C col 2

Fiecare rând conţine un caracter şi două numere întregi separate prin câte un spaţiu.
Ultima linie va fi formată din trei numere 0 separate prin câte un spaţiu, adică 0 0 0.

Restricţii

  • 1 <= m, n <= 333
  • Dacă există mai multe soluţii puteţi afişa oricare dintre acestea.
  • Datele de intrare întotdeauna sunt corecte.

Exemplu

cubulete.in cubulete.out Explicaţii

2 2 1
0 1 0 0 2 0
0 0 0 0 0 0
0 2 0 0 1 0
0 0 0 0 0 0
0 1 0 0 2 0
0 0 0 0 0 0


L 1 -1
C 2 2
0 0 0

Prima linie se roteşte cu 90 de grade înapoi şi se obţine:
0 0 0 0 0 0
0 1 0 0 2 0
0 0 0 0 0 0
0 0 0 0 0 0
0 1 0 0 2 0
0 0 0 0 0 0

Apoi coloana a doua se roteşte cu 180 de grade:
0 0 0 0 0 0
0 1 0 0 1 0
0 0 0 0 0 0
0 0 0 0 0 0
0 1 0 0 1 0
0 0 0 0 0 0

Astfel toate feţele vor fi etichetate cu valoarea 1.

2 2 0
0 1 0 0 2 0
0 0 0 0 0 0
0 2 0 0 1 0
0 0 0 0 0 0
0 1 0 0 2 0
0 0 0 0 0 0


L 2 1
C 1 -1
0 0 0

Linia a doua se roteşte cu 90 de grade înainte,
Coloana a doua se roteşte cu 180 de grade.
Astfel toate feţele vor fi etichetate cu valoarea 0.

prof. Szabo Zoltan
Grupul Scolar "Petru Maior" Reghin
szabozoliposta@yahoo.com
propunător: Prof. Emanuela Cerchez
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la .campion 2011: ore, pegals, valet, xpn, efect, nrperm, b2k, sumdivprod, nr0, maxviz, oneton, oras1, ksecv, ripstick, antic, oak, nor, nrpomi, sumprod, paisprezece, cover1, prisme, gxor, progresii, anagramabil, zuma, nrpal, sdmin, lista, operatii1, codarb, codpatrat, adprod, puncte4, qtri, reconst, gsm, subsiruri, mijloc, trifoi, romb, maxbin, albine2, probleme, triburi1, megascoala, 2ndesc
De acelaşi autor: balanta, bonuri, cub, magic, magic2, munte, euclid, banda, biliard, fractie1, fotbal, arctir, orientare, rege, fibo1, piatra, war, aritm, ssmax, sirmax, ikebana, punctfix, domino2, lant1, parc1, biperm, triunghi6, stiva1
Despre matrice: vopsea, harta, opmat, sarpe, light, magic2, tetris, origami, concurs, iepuras, tribile, criptmat, cutie, patrate, 3d, pajura, perspic, vecini2, livada, matrice3, kafka, erdos, grup, scor2, reteta2, rezervatie, scoici, tablou, game, stea, submatrix, cifru, jokes, oua, trecere, na, dotnet, renju, ghici, mere1, agitatie, lacuri, sotron, desen1, camion, ceas1, fibo, parc, excursia, matricea, zidar, joc6, log, concurs2, cladiri, dist, centru, robinson, cuburi2, joc8, joc9, romeo, adevar, soricel2, avere, joc11, vizibil, sah1, blockout, masina3, lsort, anticip, matrice1, evantai, spion, pereti, zumzi, roboti, placare, tabel, ocr, numere7, lacusta, becuri, sir5, flori, cartele, furnica, pavare, poarta, rj, peri, poligon2, sablon1, gradina, matrice4, poartas, balcon, submdisj, v, matrx, figura, neuroni, raze, roboti1, bila, iepurasi, colorare, mat, submatrix1, simetric1, plaja, xor2, guess, albine1, joct, alfabetar, stele, tablou1, alpinist, cladire, cri, grupe2, el, mahjong, sir9, acces, tort1, joc17, mesaj3, zar1, xy, poteci, avioane, broscute, safeu, acoperire1, radioactiv, robot4, lcdr, jb, slide, maxtri, dame, triunghi4, elicop, compresie, mijloc, romb, 2ndesc, medalion, bile6, zigzag, puncte5, intersectii, matd3, matrixdel, speed, seif1, traseu2, incadrare, betasah, zona, latin, zmax, amestec, sudoku1, gradina1, spider, zone, bemo, rombul, interclasare, rebus1, tabla, arrows, pseudobil, patrat1, rascoala, harta2, relatii, lasere, defrag, matcnt, ssdj, cript, ssk, teren1, fence, cifre6
surse trimise | ajutor