Detalii evaluare #51827770

Rezumat problemă

#1701 Birouri

Arhi şi-a propus să extindă clădirea de birouri pe care a proiectat-o iniţial pe un singur nivel numerotat cu 1, împărţit în n*n zone pătratice de latură 1, fiecare corespunzând unui birou, prin construirea mai multor niveluri. În colţurile tuturor birourilor se construiesc grinzi de rezistenţă. Pentru a asigura rezistenţa întregii clădiri, Arhi va proiecta niveluri noi, numerotate cu 2, 3,… atât timp cât conțin cel puțin un birou și sunt respectate următoarele patru reguli:

  • R1: fiecare nivel nou va fi proiectat sub forma unui dreptunghi sau pătrat de arie maximă pentru nivelele cu număr impar, respectiv, sub forma unui pătrat de arie maximă pentru nivelele cu număr par;
  • R2: fiecare dintre colţurile zidurilor unui nivel nou trebuie plasat pe câte o grindă de rezistenţă dintre două sau mai multe birouri de pe nivelul precedent;
  • R3: oricare două dintre colţurile zidurilor unui nivel nou vor fi plasate pe ziduri diferite (un zid nu se poate suprapune în totalitate pe alt zid) şi cel puţin două vârfuri opuse ale unui nivel nou se vor afla pe ziduri opuse ale nivelului precedent;
  • R4: orice porţiune de zid de pe nivelul k (k>1), construită deasupra unui birou de pe nivelul k-1, se va suprapune exact peste una dintre laturile biroului, sau îl va străbate în diagonală.

Birourile de pe nivelul k (k>1), vor fi construite exact deasupra celor de pe nivelul precedent, astfel, nivelurile 2, 4 etc. vor avea lângă ziduri spaţii triunghiulare care nu vor aparţine niciunui birou.

Numerele inscripţionate pe birouri în imaginea de mai sus, indică nivelul corespunzător birourilor vizibile de deasupra clădirii.

Cunoscându-se lungimea n a laturii primului nivel al clădirii, să se determine:

  1. numărul maxim de niveluri pe care le poate avea clădirea;
  2. numărul total de birouri ale clădirii cu număr maxim de niveluri.

ONI 2016, clasa a VII-a

Detalii

Problema Birouri Operații I/O birouri.in/birouri.out
Limita timp 0.2 secunde Limita memorie Total: 2 MB / Stivă 2 MB
Id soluție #51827770 Utilizator rares dumitrascu (zinca_5a_rares)
Fișier birouri.cpp Dimensiune 962 B
Data încărcării 26 August 2024, 14:15 Scor / rezultat Eroare de compilare

Evaluare


Mesaj compilare

birouri.cpp:6:17: warning: character constant too long for its type [enabled by default]
     assign(fin, 'birouri.in');

                 ^
birouri.cpp:7:17: warning: character constant too long for its type [enabled by default]
     assign(fout,'birouri.out');

                 ^
birouri.cpp:1:1: error: 'program' does not name a type
 program CS_birouri;

 ^
birouri.cpp:2:1: error: 'var' does not name a type
 var

 ^
birouri.cpp:4:5: error: 'fin' does not name a type
     fin, fout:text;

     ^
birouri.cpp:5:1: error: 'begin' does not name a type
 begin

 ^
birouri.cpp:7:11: error: expected constructor, destructor, or type conversion before '(' token
     assign(fout,'birouri.out');

           ^
birouri.cpp:8:10: error: expected constructor, destructor, or type conversion before '(' token
     reset(fin); rewrite(fout);

          ^
birouri.cpp:8:24: error: expected constructor, destructor, or type conversion before '(' token
     reset(fin); rewrite(fout);

                        ^
birouri.cpp:9:15: error: expected constructor, destructor, or type conversion before '(' token
         readln(fin, c, n);

               ^
birouri.cpp:10:5: error: 'm' does not name a type
     m:=n;

     ^
birouri.cpp:11:9: error: 'repeat' does not name a type
         repeat

         ^
birouri.cpp:14:13: error: expected unqualified-id before 'if'
             if niv mod 2 = 1 then

             ^
birouri.cpp:19:21: error: 'p' does not name a type
                     p := k * k div 2 - k;

                     ^
birouri.cpp:20:13: error: 'b' does not name a type
             b := b + p;

             ^
birouri.cpp:21:21: error: expected unqualified-id before 'if'
                     if p = 0 then dec(niv);

                     ^
birouri.cpp:22:21: error: expected unqualified-id before 'if'
                     if k mod 4 = 0 then begin

                     ^
birouri.cpp:24:17: error: 'n' does not name a type
                 n := k; m := k

                 ^
birouri.cpp:24:25: error: 'm' does not name a type
                 n := k; m := k

                         ^
birouri.cpp:27:35: error: 'm' does not name a type
                 n := n div 2 - 1; m := n + 2

                                   ^
birouri.cpp:30:9: error: 'until' does not name a type
         until not((n <> 0) and (n mod 2 = 0));

         ^
birouri.cpp:31:9: error: expected unqualified-id before 'if'
         if c=1 then

         ^
birouri.cpp:35:10: error: expected constructor, destructor, or type conversion before '(' token
     close(fin); close(fout);

          ^
birouri.cpp:35:22: error: expected constructor, destructor, or type conversion before '(' token
     close(fin); close(fout);

                      ^
birouri.cpp:36:1: error: 'end' does not name a type
 end.
 ^

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