Detalii evaluare #50619848

Rezumat problemă

Se consideră o matrice cu elemente 0 sau 1, cu L linii (numerotate de la 1 la L) şi C coloane (numerotate de la 1 la C).
Definim o zonă dreptunghiulară ca fiind o submatrice ce are pe contur numai valori 1 şi cu proprietatea că nu există valori de 1 nesituate pe contur şi în acelaşi timp la distanţa 1 faţă de un punct de pe contur. Două puncte sunt la distanţa 1 dacă şi numai dacă sunt vecine pe una dintre cele 8 direcţii.
Să se determine numărul total de zone dreptunghiulare din matrice, ordinul maxim al unei zone şi numărul de zone care au acest ordin maxim.

Detalii

Problema dreptunghiuri1 Operații I/O dreptunghiuri.in/dreptunghiuri.out
Limita timp 0.4 secunde Limita memorie Total: 20 MB / Stivă 8 MB
Id soluție #50619848 Utilizator Barbu Matei (Barbu_Matei)
Fișier dreptunghiuri1.cpp Dimensiune 2.39 KB
Data încărcării 17 Aprilie 2024, 13:13 Scor / rezultat Eroare de compilare

Evaluare


Mesaj compilare

dreptunghiuri1.cpp:10:19: error: 'int y1' redeclared as different kind of symbol
 int x1 = INT_MAX, y1 = INT_MAX, x2, y2;

                   ^
In file included from /usr/include/features.h:374:0,
                 from /usr/include/assert.h:35,
                 from /usr/include/c++/4.8/cassert:43,
                 from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:33,
                 from dreptunghiuri1.cpp:1:
/usr/include/i386-linux-gnu/bits/mathcalls.h:241:1: error: previous declaration of 'double y1(double)'
 __MATHCALL (y1,, (_Mdouble_));
 ^
dreptunghiuri1.cpp:11:9: error: 'int y0' redeclared as different kind of symbol
 int x0, y0;

         ^
In file included from /usr/include/features.h:374:0,
                 from /usr/include/assert.h:35,
                 from /usr/include/c++/4.8/cassert:43,
                 from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:33,
                 from dreptunghiuri1.cpp:1:
/usr/include/i386-linux-gnu/bits/mathcalls.h:240:1: error: previous declaration of 'double y0(double)'
 __MATHCALL (y0,, (_Mdouble_));
 ^
dreptunghiuri1.cpp: In function 'void resetBorders()':
dreptunghiuri1.cpp:17:13: error: assignment of function 'double y1(double)'
     x1 = y1 = INT_MAX;

             ^
dreptunghiuri1.cpp:17:13: error: cannot convert 'int' to 'double(double)throw ()' in assignment
dreptunghiuri1.cpp: In function 'bool findInterior(int, int)':
dreptunghiuri1.cpp:23:8: error: assignment of function 'double y0(double)'
     y0 = 0;

        ^
dreptunghiuri1.cpp:23:8: error: cannot convert 'int' to 'double(double)throw ()' in assignment
dreptunghiuri1.cpp:27:43: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
         if (vx >= x1 && vx <= x2 && vy >= y1 && vy <= y2 && !mt[vx][vy]) {

                                           ^
dreptunghiuri1.cpp:29:16: error: assignment of function 'double y0(double)'
             y0 = vy;

                ^
dreptunghiuri1.cpp:29:16: error: cannot convert 'int' to 'double(double)throw ()' in assignment
dreptunghiuri1.cpp:32:26: warning: the address of 'double y0(double)' will never be NULL [-Waddress]
     if (x0 != 0 && y0 != 0) {

                          ^
dreptunghiuri1.cpp: In function 'void fillZone(int, int, int, int)':
dreptunghiuri1.cpp:51:27: error: no matching function for call to 'min(int&, double (&)(double)throw ())'
             y1 = min(y, y1);

                           ^
dreptunghiuri1.cpp:51:27: note: candidates are:
In file included from /usr/include/c++/4.8/bits/char_traits.h:39:0,
                 from /usr/include/c++/4.8/ios:40,
                 from /usr/include/c++/4.8/istream:38,
                 from /usr/include/c++/4.8/sstream:38,
                 from /usr/include/c++/4.8/complex:45,
                 from /usr/include/c++/4.8/ccomplex:38,
                 from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:52,
                 from dreptunghiuri1.cpp:1:
/usr/include/c++/4.8/bits/stl_algobase.h:193:5: note: template<class _Tp> const _Tp& std::min(const _Tp&, const _Tp&)
     min(const _Tp& __a, const _Tp& __b)
     ^
/usr/include/c++/4.8/bits/stl_algobase.h:193:5: note:   template argument deduction/substitution failed:
dreptunghiuri1.cpp:51:27: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'double(double)throw ()')
             y1 = min(y, y1);

                           ^
In file included from /usr/include/c++/4.8/bits/char_traits.h:39:0,
                 from /usr/include/c++/4.8/ios:40,
                 from /usr/include/c++/4.8/istream:38,
                 from /usr/include/c++/4.8/sstream:38,
                 from /usr/include/c++/4.8/complex:45,
                 from /usr/include/c++/4.8/ccomplex:38,
                 from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:52,
                 from dreptunghiuri1.cpp:1:
/usr/include/c++/4.8/bits/stl_algobase.h:239:5: note: template<class _Tp, class _Compare> const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^
/usr/include/c++/4.8/bits/stl_algobase.h:239:5: note:   template argument deduction/substitution failed:
dreptunghiuri1.cpp:51:27: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'double(double)throw ()')
             y1 = min(y, y1);

                           ^
In file included from /usr/include/c++/4.8/algorithm:62:0,
                 from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:64,
                 from dreptunghiuri1.cpp:1:
/usr/include/c++/4.8/bits/stl_algo.h:4221:5: note: template<class _Tp> _Tp std::min(std::initializer_list<_Tp>)
     min(initializer_list<_Tp> __l)
     ^
/usr/include/c++/4.8/bits/stl_algo.h:4221:5: note:   template argument deduction/substitution failed:
dreptunghiuri1.cpp:51:27: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
             y1 = min(y, y1);

                           ^
In file included from /usr/include/c++/4.8/algorithm:62:0,
                 from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:64,
                 from dreptunghiuri1.cpp:1:
/usr/include/c++/4.8/bits/stl_algo.h:4226:5: note: template<class _Tp, class _Compare> _Tp std::min(std::initializer_list<_Tp>, _Compare)
     min(initializer_list<_Tp> __l, _Compare __comp)
     ^
/usr/include/c++/4.8/bits/stl_algo.h:4226:5: note:   template argument deduction/substitution failed:
dreptunghiuri1.cpp:51:27: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
             y1 = min(y, y1);

                           ^
dreptunghiuri1.cpp:65:54: error: invalid conversion from 'double (*)(double)throw ()' to 'int' [-fpermissive]
                         fillZone(x0, y0, level + 1, 0);

                                                      ^
dreptunghiuri1.cpp:38:6: error:   initializing argument 2 of 'void fillZone(int, int, int, int)' [-fpermissive]
 void fillZone(int i, int j, int level, int val) {

      ^
dreptunghiuri1.cpp: In function 'int main()':
dreptunghiuri1.cpp:91:42: error: invalid conversion from 'double (*)(double)throw ()' to 'int' [-fpermissive]
                     fillZone(x0, y0, 1, 0);

                                          ^
dreptunghiuri1.cpp:38:6: error:   initializing argument 2 of 'void fillZone(int, int, int, int)' [-fpermissive]
 void fillZone(int i, int j, int level, int val) {

      ^

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