#1761
Brutar
Renumitul nostru brutar a avut azi noapte un vis tare ciudat: acesta trăia într-un univers paralel în care nu omul îl mănâncă pe blat ci blatul îl mănâncă pe om… (eh, poate nu chiar atât de paralel). Astfel, brutarul nostru a fost atacat de blatul pe care tocmai îl pregătise (pentru prăjituri, evident) și a încercat să scape. Acesta a ieșit din brutărie și a ajuns în fața unui câmp de formă dreptunghiulară, cu dimensiunile cunoscute, ce poate fi împărțit în celule elementare cu latura de o unitate (exact ca o matrice!). Acesta poate intra pe câmp prin orice celulă a primei linii și trebuie să ajungă în orice celulă a ultimei linii (blatul se va întări până va ajunge acolo). Unele celule îi sunt inaccesibile din cauza diverselor obstacole (pietre, pomi, gropi,etc.)
Brutarul nostru se poate deplasa în 6
moduri:
Nord
, Vest
, Sud
, Est
)Mutările speciale vor fi citite din fișier și o mutare se va codifica astfel: xA yB
, unde x
și y
sunt numere naturale nenule iar A
și B
sunt două caractere ce codifică direcția (A
poate fi 'N'
sau 'S'
de la Nord
respectiv Sud
iar B
poate fi ‘E’
sau ‘V’
de la Est
respectiv Vest
)
O mutare specială se poate face dacă celula destinație nu este ocupată de un obstacol și dacă nu implică ieșirea brutarului din matrice.
Brutarul vă roagă să îi specificați un traseu cu număr minim de celule parcurse, ce pornește de pe prima linie și se termină pe ultima linie, pentru a nu fi blătuit (mâncat de blat).
Concursul EMPOWERSOFT, 2016
Problema | Brutar | Operații I/O |
brutar.in /brutar.out
|
---|---|---|---|
Limita timp | 0.1 secunde | Limita memorie |
Total: 16 MB
/
Stivă 4 MB
|
Id soluție | #53281160 | Utilizator | |
Fișier | brutar.cpp | Dimensiune | 3.35 KB |
Data încărcării | 23 Octombrie 2024, 11:44 | Scor / rezultat | Eroare de compilare |
brutar.cpp: In function 'int main()': brutar.cpp:31:21: warning: array subscript has type 'char' [-Wchar-subscripts] mp[c]=-1; ^ brutar.cpp:31:22: error: incompatible types in assignment of 'int' to 'int [1003]' mp[c]=-1; ^ brutar.cpp:54:54: error: too few arguments to function 'bool ok(int, int)' if(mp[i+int(a2)-48][j+int(b2)-48]==0&&ok()) ^ brutar.cpp:15:6: note: declared here bool ok(int f1, int f2) ^ brutar.cpp:63:53: warning: the address of 'bool ok(int, int)' will always evaluate as 'true' [-Waddress] if(mp[i-(int(a2)-48)][j+int(b2)-48]==0&&ok) ^ brutar.cpp:72:53: warning: the address of 'bool ok(int, int)' will always evaluate as 'true' [-Waddress] if(mp[i+int(a2)-48][j-(int(b2)-48)]==0&&ok) ^ brutar.cpp:81:55: warning: the address of 'bool ok(int, int)' will always evaluate as 'true' [-Waddress] if(mp[i-(int(a2)-48)][j-(int(b2)-48)]==0&&ok) ^ brutar.cpp:93:51: warning: the address of 'bool ok(int, int)' will always evaluate as 'true' [-Waddress] if(mp[i+int(x2)-48][j+int(y2)-48]==0&&ok) ^ brutar.cpp:102:53: warning: the address of 'bool ok(int, int)' will always evaluate as 'true' [-Waddress] if(mp[i-(int(x2)-48)][j+int(y2)-48]==0&&ok) ^ brutar.cpp:111:53: warning: the address of 'bool ok(int, int)' will always evaluate as 'true' [-Waddress] if(mp[i+int(x2)-48][j-(int(y2)-48)]==0&&ok) ^ brutar.cpp:120:55: warning: the address of 'bool ok(int, int)' will always evaluate as 'true' [-Waddress] if(mp[i-(int(x2)-48)][j-(int(y2)-48)]==0&&ok) ^ brutar.cpp:129:17: error: 'k' was not declared in this scope for(k=0; k<4; k++) ^ brutar.cpp:131:17: error: 'i2' was not declared in this scope i2=i+di[k]; ^ brutar.cpp:132:17: error: 'j2' was not declared in this scope j2=j+dj[k]; ^ brutar.cpp:136:42: error: expected primary-expression before ';' token mp[i2][j2]=mp[i][j]+!; ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Brutar 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ă.