#3056
walle
N x M
. Analizând harta, WALL-E constată că are de-a face cu un labirint extrem de sofisticat. El reușește să identifice următoarele tipuri de celule:
W
– celula unde, la început, se află WALL-E,E
– celula ‘EXIT’ care poate fi accesată de WALL-E și care îl poate teleporta pe acesta instantaneu în afara labirintului, într-un loc sigur,.
– celule libere, care pot fi accesate de WALL-E,#
– celule de tip zid, care NU pot fi accesate de WALL-E,+
– celule de tip ușă, care pot fi accesate de WALL-E, dar continuarea deplasării la o celulă vecină se poate face doar după o așteptare de exact T
secunde,P
– celule de tip portal, care îl teleportează pe WALL-E instantaneu, la întâmplare, într-una dintre celelalte celule de tip portal. Dacă WALL-E accesează o celulă (x1, y1)
de tip portal, atunci el va fi instantaneu teleportat la o altă celulă (x2,y2)
de tip portal, iar mai departe el se va deplasa numai într-o celulă vecină cu (x2,y2)
(nu poate sta pe loc)Comportamentul haotic al portalurilor îl îngrijorează pe WALL-E, astfel că își propune să afle care este numărul minim de secunde în care, cu certitudine, el va putea părăsi labirintul. Dacă nu se poate determina cu certitudine acest lucru, sau dacă WALL-E nu poate părăsi labirintul, răspunsul va fi -1
.
ONI 2019 clasa a X-a
Problema | walle | Operații I/O |
walle.in /walle.out
|
---|---|---|---|
Limita timp | 0.4 secunde | Limita memorie |
Total: 128 MB
/
Stivă 8 MB
|
Id soluție | #22529879 | Utilizator | |
Fișier | walle.cpp | Dimensiune | 3.08 KB |
Data încărcării | 20 Aprilie 2020, 20:28 | Scor / rezultat | 100 puncte |
walle.cpp: In function 'int solve(Pair, Pair, const std::vector<int>&, const std::vector<int>&)': walle.cpp:104:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(i=0; i<p1.size(); ++i) ^ walle.cpp:107:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(i=0; i<p2.size(); ++i) ^ walle.cpp: In function 'int main()': walle.cpp:130:36: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("walle.in", "r", stdin); ^ walle.cpp:131:38: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("walle.out", "w", stdout); ^ walle.cpp: In function 'Pair calc_dist(char, int (*)[505])': walle.cpp:37:27: warning: 'Y' may be used uninitialized in this function [-Wmaybe-uninitialized] heap.push({ 0, ((X<<9)|Y) }); ^ walle.cpp:37:23: warning: 'X' may be used uninitialized in this function [-Wmaybe-uninitialized] heap.push({ 0, ((X<<9)|Y) }); ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
0 | 0 secunde | OK. | 5 | 5 | ||
1 | 0 secunde | OK. | 1 | 1 | ||
2 | 0.012 secunde | OK. | 6 | 6 | ||
3 | 0.024 secunde | OK. | 7 | 7 | ||
4 | 0 secunde | OK. | 8 | 8 | ||
5 | 0 secunde | OK. | 1 | 1 | ||
6 | 0.012 secunde | OK. | 7 | 7 | ||
7 | 0 secunde | OK. | 6 | 6 | ||
8 | 0 secunde | OK. | 6 | 6 | ||
9 | 0 secunde | OK. | 7 | 7 | ||
10 | 0 secunde | OK. | 1 | 1 | ||
11 | 0 secunde | OK. | 3 | 3 | ||
12 | 0 secunde | OK. | 3 | 3 | ||
13 | 0 secunde | OK. | 3 | 3 | ||
14 | 0 secunde | OK. | 5 | 5 | ||
15 | 0 secunde | OK. | 5 | 5 | ||
16 | 0 secunde | OK. | 1 | 1 | ||
17 | 0.02 secunde | OK. | 4 | 4 | ||
18 | 0.024 secunde | OK. | 5 | 5 | ||
19 | 0.008 secunde | OK. | 2 | 2 | ||
20 | 0.072 secunde | OK. | 5 | 5 | ||
21 | 0 secunde | OK. | 3 | 3 | ||
22 | 0 secunde | OK. | 4 | 4 | ||
23 | 0 secunde | OK. | 1 | 1 | ||
24 | 0 secunde | OK. | 1 | 1 | ||
Punctaj total | 100 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema walle 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ă.