Detalii evaluare #56618010

Rezumat problemă

MZ

#1785

Fericit că s-a calificat la ONI, XORin vrea să sărbătorească făcând cât mai mult zgomot. Deoarece e programator, acesta s-a gândit să automatizeze felul în care face zgomot.

Pentru a face zgomot el folosește o placă cu circuite de diverse intensități. Placa poate fi reprezentată sub forma unei matrice cu N linii și M coloane. Fiecare celulă din matrice are o intensitate între 0 și 9 (o celulă cu intensitatea 0 corespunde unei zone goale, fără nici un circuit).

Un circuit începe într-o celulă a matricei și se termină în altă celulă, fiind o succesiune de celule adiacente de aceeași intensitate de la un capăt la celălalt al circuitului, asemenea unui drum pe matrice între cele două celule. Două celule se consideră adiacente dacă au o latură comună, deci o celulă e adiacentă cu maxim patru alte celule.

Placa a fost concepută în așa fel încât să nu apară scurtcircuite, așadar curentul dintr-un circuit poate merge numai într-o singură direcție (cu alte cuvinte, fiecare celulă dintr-un circuit se învecinează cu maxim alte două celule din același circuit). Nu există circuite de aceeași intensitate care să se învecineze.

Zgomotul produs de un circuit este egal cu lungimea lui, adică cu numărul de celule din matrice corespunzătoare circuitului.

Cerințe:

1) Să se afle numărul de circuite.
2) Să se afle valoarea zgomotului maxim care poate fi obținut unind două circuite. Două circuite pot fi unite dacă se poate trage o legătură de la un capăt al unui circuit până la un capăt al celuilalt circuit, numai prin celulele libere ale matricei (de intensitate 0). Legătura trebuie să aibă forma unui circuit. Lungimea circuitului nou creat nu se adaugă la zgomotul produs de cele doua circuite.
3) Să se afișeze placa ce conține legătura care unește două circuite din care se obține zgomotul maxim de la cerința 2. Dacă există mai multe variante, se poate afișa orice placă care conține legătura validă.

Concursul Interjudeţean de Matematică şi Informatică Grigore Moisil, 2016

Fișiere Candale Silviu (silviu) Petru Trimbitas concurs

Detalii

Problema MZ Operații I/O mz.in/mz.out
Limita timp 2.5 secunde Limita memorie Total: 64 MB / Stivă 32 MB
Id soluție #56618010 Utilizator Nam Num (tRasHcaN27)
Fișier mz.cpp Dimensiune 5.88 KB
Data încărcării 27 Februarie 2025, 15:01 Scor / rezultat Eroare de compilare

Evaluare

Mesaj compilare

mz.cpp: In function 'void BFS(int, int, bool)':
mz.cpp:29:14: error: expected unqualified-id before '[' token
         auto [cx, cy] = q.front(); q.pop();

              ^
mz.cpp:30:26: error: 'cx' was not declared in this scope
         cells.push_back({cx, cy});

                          ^
mz.cpp:30:30: error: 'cy' was not declared in this scope
         cells.push_back({cx, cy});

                              ^
mz.cpp:30:33: error: no matching function for call to 'std::vector<std::pair<int, int> >::push_back(<brace-enclosed initializer list>)'
         cells.push_back({cx, cy});

                                 ^
mz.cpp:30:33: note: candidates are:
In file included from /usr/include/c++/4.8/vector:64:0,
                 from mz.cpp:2:
/usr/include/c++/4.8/bits/stl_vector.h:901:7: note: void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = std::pair<int, int>; _Alloc = std::allocator<std::pair<int, int> >; std::vector<_Tp, _Alloc>::value_type = std::pair<int, int>]
       push_back(const value_type& __x)
       ^
/usr/include/c++/4.8/bits/stl_vector.h:901:7: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type& {aka const std::pair<int, int>&}'
/usr/include/c++/4.8/bits/stl_vector.h:919:7: note: void std::vector<_Tp, _Alloc>::push_back(std::vector<_Tp, _Alloc>::value_type&&) [with _Tp = std::pair<int, int>; _Alloc = std::allocator<std::pair<int, int> >; std::vector<_Tp, _Alloc>::value_type = std::pair<int, int>]
       push_back(value_type&& __x)
       ^
/usr/include/c++/4.8/bits/stl_vector.h:919:7: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::vector<std::pair<int, int> >::value_type&& {aka std::pair<int, int>&&}'
mz.cpp:33:27: error: 'ny' was not declared in this scope
             if (nx < 1 || ny < 1 || nx > n || ny > m) continue;

                           ^
mz.cpp:34:29: error: 'ny' was not declared in this scope
             if (visited[nx][ny] || mat[nx][ny] != val) continue;

                             ^
mz.cpp:35:25: error: 'ny' was not declared in this scope
             visited[nx][ny] = true;

                         ^
mz.cpp:36:28: error: no matching function for call to 'std::queue<std::pair<int, int> >::push(<brace-enclosed initializer list>)'
             q.push({nx, ny});

                            ^
mz.cpp:36:28: note: candidates are:
In file included from /usr/include/c++/4.8/queue:64:0,
                 from mz.cpp:3:
/usr/include/c++/4.8/bits/stl_queue.h:212:7: note: void std::queue<_Tp, _Sequence>::push(const value_type&) [with _Tp = std::pair<int, int>; _Sequence = std::deque<std::pair<int, int>, std::allocator<std::pair<int, int> > >; std::queue<_Tp, _Sequence>::value_type = std::pair<int, int>]
       push(const value_type& __x)
       ^
/usr/include/c++/4.8/bits/stl_queue.h:212:7: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type& {aka const std::pair<int, int>&}'
/usr/include/c++/4.8/bits/stl_queue.h:217:7: note: void std::queue<_Tp, _Sequence>::push(std::queue<_Tp, _Sequence>::value_type&&) [with _Tp = std::pair<int, int>; _Sequence = std::deque<std::pair<int, int>, std::allocator<std::pair<int, int> > >; std::queue<_Tp, _Sequence>::value_type = std::pair<int, int>]
       push(value_type&& __x)
       ^
/usr/include/c++/4.8/bits/stl_queue.h:217:7: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::queue<std::pair<int, int> >::value_type&& {aka std::pair<int, int>&&}'
mz.cpp:43:19: error: expected unqualified-id before '[' token
         for (auto [cx, cy] : cells) {

                   ^
mz.cpp:43:19: error: expected ';' before '[' token
mz.cpp:43:20: error: 'cx' was not declared in this scope
         for (auto [cx, cy] : cells) {

                    ^
mz.cpp:43:24: error: 'cy' was not declared in this scope
         for (auto [cx, cy] : cells) {

                        ^
mz.cpp: In lambda function:
mz.cpp:43:28: error: expected '{' before ':' token
         for (auto [cx, cy] : cells) {

                            ^
mz.cpp: In function 'void BFS(int, int, bool)':
mz.cpp:43:28: error: expected ';' before ':' token
mz.cpp:43:28: error: expected primary-expression before ':' token
mz.cpp:43:28: error: expected ')' before ':' token
mz.cpp:43:28: error: expected primary-expression before ':' token
mz.cpp:43:28: error: expected ';' before ':' token
mz.cpp:178:1: error: expected '}' at end of input
 }
 ^
mz.cpp:178:1: error: expected '}' at end of input

Cum funcționează evaluarea?

www.pbinfo.ro permite evaluarea a două tipuri de probleme:

  • probleme la care rezolvarea presupune scrierea unui program complet
  • probleme la care rezolvarea presupune scrierea unei secvențe de program - câteva instrucțiuni, o listă de declarații, una sau mai multe funcții, etc.

Problema MZ face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:

  • Programul sursă este compilat folosind compilatorul corespunzător. Dacă în urma compilării se obțin erori sau avertismente, acestea sunt afișate în această pagină.
  • Dacă programul a fost compilat, executabilul obținut va fi rulat, furnizându-i-se unul sau mai multe seturi de date de intrare, în concordanță cu restricțiile specifice problemei. Pentru fiecare set de date se obține un anumit punctaj, în raport cu corectitudinea soluției tale.

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ă.

Du-te sus!