1 - Mala matrica
Vremensko ograničenje | Memorijsko ograničenje |
---|---|
1000ms | 256MB |
Data je matrica \(A\) koja ima dve vrste i tri kolone (tj. dimenzija \(2\times 3\)). Elementi matrice su celi brojevi koji su veći od nule ili jednaki nuli. Zameniti sve elemente matrice koji su jednaki nuli pozitivnim celim brojevima (prirodnim brojevima), tako da zbir svih elemenata u prve dve kolone bude jednak zbiru elemenata u poslednje dve kolone. Ako ima više mogućih načina da se to izvede, odrediti onu zamenu kod koje je zbir svih elemenata matrice minimalan. Ako postoji više različitih matrica sa minimalnim zbirom, odštampati bilo koju.
Opis ulaza
U dva reda standardnog ulaza se nalaze po tri cela broja koji predstavljaju dve vrste date matrice.
Opis izlaza
Ako ne postoji matrica sa traženim osobinama ispisati \(-1\) u prvom redu standardnog izlaza. Ako postoji matrica sa traženim osobinama, ispisati elemente te matrice, u svakom od dva reda po jednu vrstu matrice.
Primer 1
Ulaz
Izlaz
Primer 2
Ulaz
Izlaz
Objašnjenje primera
U prvom primeru, samo je element u preseku druge vrste i prve kolone jednak nuli. Ako njega izjednačimo sa \(7\), zbirovi podmatrica će biti jednaki. Ako zamenimo bilo kojim drugim brojem, zbirovi podmatrica će se razlikovati.
Ograničenja i podzadaci
- Elementi ulazne matrice imaju vrednosti između \(0\) i \(10^9\).
Test primeri su podeljeni u tri disjunktne grupe:
- U test primerima koji vrede \(50\) poena, elementi matrice nisu veći od \(10\).
- U test primerima koji vrede \(20\) poena, tačno jedan element matrice je jednak nuli.
- U test primerima koji vrede \(30\) poena nema dodatnih ograničenja.
Autor | Tekst i test primeri | Analiza rеšenja | Testiranje |
---|---|---|---|
Aleksa Plavšić | Dragan Urošević | Dragan Urošević | Aleksa Plavšić i Ivan Stošić |
Primetimo da ako su zbirovi podmatrice koju čine prve dve kolone i podmatrice koju čine poslednje dve kolone jednaki, onda su jednaki zbir elemenata u prvoj koloni i zbir elemenata u trećoj koloni. Prema tome, proveravaćemo da li možemo da podesimo vrednosti nula-elemenata tako da zbir prve i zbir treće kolone budu jednaki. Elementi koji se nalaze u drugoj (srednjoj) koloni ne utiču na zbir i zbog toga je dovoljno one koji su jednaki nuli postaviti na jedan.
Neka je \(nz\) ukupan broj nula u prvoj i trećoj koloni.
Ako je \(nz=0\), onda u tim dvema kolonama nema niti jedan element koji se može promeniti. Ako su zbirovi tih kolona jednaki, onda problem ima rešenje i to je matrica u kojoj je samo srednja kolona ažurirana tako što su elementi koji su jednaki nuli zamenjeni jedinicom.
Ako je \(nz=1\), onda je samo jedan element jednak nuli i on može promeniti vrednost. Njegova vrednost se odredi tako da zbirovi prve i treće kolone budu jednaki. Ako je ta vrednost veća od nule, onda problem ima rešenje.
Ako je \(nz=3\), onda je samo jedan od \(4\) elementa u prvoj i trećoj koloni različit od nule. Neka je \(k\) redni broj kolone u kojoj se nalazi taj ne-nula element. Jedno od rešenja se dobija tako što se drugi element u koloni \(k\) izjednači sa jedan, a elementi u koloni \(4-k\) (kolone numerisane brojevima \(1\), \(2\) i \(3\)) izjednače sa odgovarajućim elementima (ista vrsta) u koloni \(k\).
Ako je \(nz=4\), onda su sva četiri elementa jednaki nuli i treba ih promeniti u jedan.
Ako je \(nz=2\), imamo dva podslučaja:
Ne-nula elementi su u istoj koloni (neka je to kolona \(k\)). Tada elemente u koloni \(4-k\) treba izjednačiti sa odgovarajućim u koloni \(k\) (to je jedno od mogućih rešenja).
Ne-nula elementi su u različitim kolonama. Neka su vrednosti tih elemenata \(a\) i \(b\) (obeleženi tako da je \(a\leq b\)). Jedno od mogućih rešenja se dobija tako što se nula-element u koloni u kojoj je \(b\) izjednači sa \(1\), a nula-element u koloni u kojoj je \(a\) izjednači sa \(b-a+1\). Lako se proverava da ovo rešenje zadovoljava sve uslove zadatka.
01_mala_matrica.cpp | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
|