#1021
Cartite
Cârtițele sunt animale de dimensiuni mici care își duc traiul pe suprafețe de teren deschis, având ca dușman principal vulpea. Lângă o pădure se află o zonă agricolă în forma dreptunghiulară, împărțită în pătrățele de aceeași dimensiune. Zona agricolă este reprezentată printr-un tablou bidimensional cu M
linii și N
coloane, având liniile și coloanele numerotate începând cu 1
. În aceasta zona agricolă trăiește o cârtiță și K
vulpi.
Pentru cârtiță cunoaștem coordonatele ei (linia și coloana) pe care se găsește, la fel și pentru vulpi, care stau la pânda pentru a ataca cârtita în momentele ei de neatenție.
Pe suprafața terenului cârtita se poate deplasa din pătrățelul în care se afla doar într-unul dintre cele 4
pătrățele vecine pe direcțiile nord, sud, est sau vest.
Vulpile pot ataca instantaneu pe o raza de acțiune de lungime 0
, 1
sau 2
pe orizontala și verticala, inclusiv în poziția unde se găsesc, după care tot instantaneu se întorc în pozițiile inițiale. În figura de mai jos sunt desenate pătrățele unde poate ataca o vulpe poziționață în pătrățelul cu cifra reprezentând raza de acțiune.
Pentru a micșora riscul de deplasare în zona agricolă cârtița sapă în pământ un sistem de G
galerii, care leagă între ele pătrățele din zona agricola. Aceste galerii nu se intersectează sub pământ, ci doar la suprafață, trecerea dintr-o galerie în alta, care se intersectează în același pătrățel făcându-se printr-un sistem ce nu îi pune viata în pericol. Galeriile sunt indicate prin coordonatele pătrățelelor pe care le unesc. Acestea sunt săpate astfel încât, dacă pornim dintr-un capăt al unei galerii le putem parcurge pe toate. Nu exista doua galerii care sa pornească din același pătrățel și să ajungă tot în același pătrățel (galeriile sunt distincte).
Cârtița dorește sa se plimbe prin toate galeriile de sub teren trecând o singura data prin fiecare, dar pentru acest lucru trebuie sa ajungă nevătămată mergând la suprafața terenului la un pătrățel de unde să intre în sistemul de galerii.
Determinați:
1. cel mai apropiat pătrățel de poziția inițială a cârtitei prin care ea poate să intre în galerie pentru a se plimba, precum și lungimea traseului parcurs la suprafață astfel încât fiecare pătrățel de pe traseu sa nu fie atacat de nicio vulpe;
2. traseul de plimbare numai prin galerii, specificat prin coordonatele pătrățelelor care constituie capetelor acestora.
OJI 2014, Clasele XI-XII
Problema | Cartite | Operații I/O |
cartite.in /cartite.out
|
---|---|---|---|
Limita timp | 0.1 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
Id soluție | #42657420 | Utilizator | |
Fișier | cartite.cpp | Dimensiune | 1.98 KB |
Data încărcării | 13 Martie 2023, 21:11 | Scor / rezultat | 100 puncte |
cartite.cpp: In function 'int main()': cartite.cpp:13:36: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("cartite.in","r",stdin); ^ cartite.cpp:14:38: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("cartite.out","w",stdout); ^ cartite.cpp:15:21: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d",&caz); ^ cartite.cpp:16:24: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d%d",&n,&m);m++;n++; ^ cartite.cpp:17:24: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d%d",&i,&j);X=I(i,j); ^ cartite.cpp:20:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d",&k); ^ cartite.cpp:21:41: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] for(;k;k--){scanf("%d%d%d",&i,&j,&p);fill(I(i,j),p);} ^ cartite.cpp:22:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d",&e); ^ cartite.cpp:25:28: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d%d",&i,&j); ^ cartite.cpp:27:28: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d%d",&i,&j); ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
1 | 0 secunde | Corect! | 5 | 5 | ||
2 | 0 secunde | Corect! | 5 | 5 | ||
3 | 0 secunde | Corect! | 5 | 5 | ||
4 | 0 secunde | Corect! | 5 | 5 | ||
5 | 0 secunde | Corect! | 5 | 5 | ||
6 | 0 secunde | Corect! | 5 | 5 | ||
7 | 0 secunde | Corect! | 5 | 5 | ||
8 | 0 secunde | Corect! | 5 | 5 | ||
9 | 0 secunde | Corect! | 5 | 5 | ||
10 | 0 secunde | Corect! | 5 | 5 | ||
11 | 0 secunde | Corect! | 5 | 5 | ||
12 | 0 secunde | Corect! | 5 | 5 | ||
13 | 0 secunde | Corect! | 5 | 5 | ||
14 | 0 secunde | Corect! | 5 | 5 | ||
15 | 0 secunde | Corect! | 5 | 5 | ||
16 | 0 secunde | Corect! | 5 | 5 | ||
17 | 0 secunde | Corect! | 5 | 5 | ||
18 | 0 secunde | Corect! | 5 | 5 | ||
19 | 0 secunde | Corect! | 5 | 5 | ||
20 | 0 secunde | Corect! | 5 | 5 | ||
Punctaj total | 100 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Cartite face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.