Diferente pentru problema/elicop intre reviziile #4 si #12

Nu exista diferente intre titluri.

Diferente intre continut:

== include(page="template/taskheader" task_id="elicop") ==
p<>. Considerăm o matrice cu $L$ linii (numerotate de sus în jos de la $1$ la $L$) şi $C$ coloane (numerotate de la stânga la dreapta de la $1$ la $C$) care memorează doar valori $0$ şi $1$. Mai mult, valorile egale cu $1$ sunt grupate în mai multe dreptunghiuri pline, care nu se învecinează nici pe linii, nici pe coloane, nici pe diagonale. În exemplul din $fig. 1$ matricea este corectă deoarece cele $4$ dreptunghiuri de $1$ nu se învecinează. În schimb în $fig. 2$ exis$2$ dreptunghiuri de $1$ învecinate pe coloană şi două învecinate pe diagonală, deci matricea este incorectă.
p<>. Un teren de fotbal este folosit pentru aterizarea elicopterelor. Gazonul de pe stadion este parcelat în pătrăţele de aceeaşi dimensiune, cu laturile paralele cu marginile terenului. Liniile cu pătrăţele de gazon sunt numerotate de sus în jos cu numerele $1, 2, ..., m$, iar coloanele cu pătrăţele de gazon sunt numerotate de la stânga la dreapta cu numerele $1, 2, ..., n$. Din cauza tipului diferit de iar se ştie care dintre pătrăţele de gazon sunt afectate sau nu de umbră. Acest lucru este precizat printr-un tablou bidimensional $a$ cu $m$ linii şi $n$ coloane, cu elemente $0$ şi $1$ $(a$~$ij$~ $= 0$ înseamnă că pătrăţelul aflat pe linia $i$ şi coloana $j$ este afectat de umbră, iar $a$~$ij$~ $= 1$ înseamnă că pătrăţelul aflat pe linia $i$ şi coloana $j$ nu este afectat de umbră). Fiecare elicopter are $3$ ri pe care se sprijină. Roţile fiecărui elicopter determină un triunghi dreptunghic isoscel. Elicopterele aterizează, astfel încât triunghiurile formate să fie cu catetele paralele cu marginile terenului. În exemplul următor avem patru elicoptere.
!problema/elicop?x.jpg!
p<>. În această matrice se pot face deplasări doar pe direcţiile Vest şi Nord în elemente egale cu $0$, deci din poziţia $(i, j)$ se poate ajunge doar într-una dintre poziţiile $(i, j-1)$ şi $(i-1, j)$, marcate cu $0$. În acest fel, pornind de la o anumită poziţie, prin deplasări succesive, pot fi accesate un anumit număr de elemente ale matricei egale cu $0$. De exemplu, în $fig. 1$, din poziţia $(2, 4)$ pot fi accesate $5$ componente egale cu $0$, iar din poziţia $(5, 4)$ pot fi accesate $14$ componente egale cu $0$.
 Trebuie să răspundeţi la $Q$ întrebări, fiecare întrebare fiind de forma: “Câte din elementele egale cu zero ale matricei pot fi accesate din poziţia $(i, j)$?”
p<>. Pentru a preciza poziţia unui elicopter pe teren este suficient să cunoaştem linia şi coloana vărfurilor ipotenuzei şi poziţia vârfului deasupra (codificată prin $1$) sau dedesubtul ipotenuzei (codificată prin $-1$). Pentru exemplu, elicopterul din stânga sus este dat prin $(1, 1), (3, 3)$ şi $-1$, cel din dreapta sus prin $(1, 9), (5, 5)$ şi $1$, cel din stânga jos prin $(5, 1), (6, 2)$ şi $1$, iar cel din dreapta jos prin $(5, 9), (6, 8)$ şi $1$.
 Un elicopter se consideră că a aterizat greşit, dacă triunghiul format sub el (definit mai sus) are mai mult de jumătate din pătrăţele afectate de umbră.
 Administratorul terenului de fotbal doreşte să determine numărul $N1$ de elicoptere, care nu afectează nici un pătrăţel din teren şi numerele de ordine al elicopterelor, care au aterizat greşit în ordine crescătoare: $e$~$1$~, $e$~$2$~, ..., $e$~$N2$~, ştiind că există $k$ elicoptere codificate prin numerele $1, 2, ..., k$.
h2. Cerinţă
Scrieţi un program care să determine, pentru fiecare întrebare, câte elemente egale cu $0$ din matrice pot fi accesate din poziţia precizată în cadrul întrebării.
p<>. Scrieţi un program care să determine, pentru fişierul cu datele din enunţ: numărul de elicoptere $N1$, care nu afectează nici un pătrăţel din teren şi numerele de ordine al elicopterelor, care au aterizat greşit în ordine crescătoare, precedate de numărul lor $N2$.
h2. Date de intrare
p<>. Pe prima linie a fişierului $acces.in$ se află două numere naturale $L$ şi $C$ separate printr-un spaţiu, reprezentând numărul liniilor, respectiv numărul coloanelor matricei. Pe următoarele $L$ linii se găsesc câte $C$ cifre binare, separate prin câte un spaţiu, reprezentând elementele matricei. Pe linia următoare se află numărul natural $Q$, reprezentând numărul întrebărilor. Pe următoarele $Q$ linii se găsesc câte două numere naturale $i$ şi $j$, separate prin câte un spaţiu, reprezentând poziţia corespunzătoare unei întreri.
p<>. Prima linie a fişierului de intrare $elicop.in$ conţine două numere naturale $m$ şi $n$, separate printr-un spaţiu, cu semnificia din enunţ. Următoarele $m$ linii conţin câte $n$ numere $0$ sau $1$, separate prin câte un spaţiu cu semnificaţia $0$ – pătrăţel de gazon care este afectat de umbră, respectiv $1$ - pătrăţel care nu este afectat de umbră. Pe linia $m+2$ se află numărul de elicoptere $k$, iar pe următoarele $k$ linii (în ordinea codificării lor $1, 2, ..., k$) câte cinci numere separate prin cate un spaţiu, pentru liniile şi coloanele ipotenuzelor şi poziţia rfului $(1$ sau $-1$), triunghiurilor dreptunghice asociate elicopterelor: $L1 C1 L2 C2 p$.
h2. Date de ieşire
Fişierul $acces.out$ conţine $Q$ linii. Pe linia $p (1 &le; p &le; Q)$ se află un număr natural $k$~$p$~ reprezentând răspunsul la cea de-a $p$-a întrebare.
Fişierul de ieşire $elicop.out$ va conţine două linii: prima linie numărul $N1$ de elicoptere, pe care nu afectează nici un pătrăţel din teren, a doua linie cu numerele naturale $N2$, $e$~$1$~, $e$~$2$~, ..., $e$~$N2$~ separate prin câte un spaţiu, în ordine crescătoare.
h2. Restricţii
* $4 &le; L, C &le; 1 000$
* $3 &le; Q &le; 500 000$
* Pentru orice întrebare $i j$ se garantează că valoarea corespunzătoare din matrice este $0$
* Pentru toate testele, dreptunghiurile formate din valori de 1 nu se învecinează
* $2 &le; m, n &le; 100$
* $1 &le; k &le; 40$
* Nu există suprapuneri de triunghiuri asociate la două elicoptere.
* Triunghiurile asociate elicopterelor conţin cel puţin trei pătrăţele.
* Pentru determinarea corectă a valorilor $N1$ se obţine $40%$ din punctajul unui test, iar pentru determinarea corectă a valorilor $N2$, $e$~$1$~, $e$~$2$~, ..., $e$~$N2$~ se obţine $60%$ din punctajul unui test.
h2. Exemplu
table(example). |_. acces.in |_. acces.out |_. Explicaţie |
| 5 7
0 0 0 0 1 1 1
0 1 1 0 1 1 1
0 1 1 0 0 0 0
0 1 1 0 1 0 0
0 0 0 0 1 0 1
table(example). |_. elicop.in |_. elicop.out |_. Explicaţie |
| 7 9
1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 0
0 0 1 0 1 1 1 0 0
1 1 1 0 1 1 0 1 1
0 0 1 1 1 1 0 1 1
1 1 1 1 1 1 0 1 1
1 1 1 1 1 1 0 0 1
4
2 4
5 4
4 7
3 1
| 5
14
11
3
|Pentru prima întrebare, cele 5 componente egale cu 0 care pot fi accesate sunt cele din
poziţiile $(1, 1), (1, 2), (1, 3), (1, 4), (2, 4).$
1 1 3 3 -1
1 9 5 5 1
5 1 6 2 1
5 9 6 8 1
| 2
2 1 3
|Elicopterele $2$ şi $4$ nu afectează niciun pătrăţel de gazon.
 Elicopterele $1$ şi $3$ afectează fiecare mai mult de jumătate din numărul pătrăţelelor asociate triunghiurilor
dreptunghice şi deci aterizează greşit. Elicopterul $1$ face umbră la $6$ pătrăţele, din care afectate sunt $4$.
 Elicopterul $3$ face umbră la $3$ pătrăţele, din care afectate sunt două.
|
== include(page="template/taskfooter" task_id="elicop") ==

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.