Detalii evaluare #64962665

Rezumat problemă

#2437

Cel mai nou proiect imobiliar din capitală este compus din N blocuri-turn, construite unul lângă altul, de-a lungul unui bulevard central și numerotate de la 1 la N. Pentru fiecare turn se cunoaște numărul etajelor din care este compus acesta și se mai știe că nu există două turnuri cu același număr de etaje. Ultimele norme urbanistice definesc coeficientul de frumusețe al turnului cu numărul T ca fiind numărul turnurilor din secvența de turnuri care începe cu turnul S, se termină cu turnul D și are următoarele proprietăți:

  • 1 ≤ S ≤ T ≤ D ≤ N
  • numărul etajelor fiecărui turn din secvență, cu excepţia turnului T, este mai mic decât numărul de etaje ale turnului T;
  • Dacă S ≠ 1 atunci turnul S-1 este cel mai apropiat turn din stânga turnului T, care are un număr de etaje strict mai mare decât turnul T;
  • Dacă D ≠ N atunci turnul D+1 este cel mai apropiat turn din dreapta turnului T, care are un număr de etaje strict mai mare decât turnul T;

Coeficientul de frumusețe al întregului ansamblu de turnuri este suma coeficienților de frumusețe avuţi de turnurile componente. Dezvoltatorul proiectului dorește să renunțe la unul dintre turnuri și să construiască în locul acestuia un restaurant subteran, acesta considerându-se un turn cu zero etaje. Dezvoltatorul dorește să calculeze coeficientul de frumusețe al ansamblului de turnuri, pentru fiecare posibilă amplasare a restaurantului.

Cunoscând numărul N de turnuri și numărul etajelor fiecăruia, determinați coeficientul de frumusețe al ansamblului de turnuri pentru toate cele N posibilități de amplasare ale restaurantului, pe pozițiile 1, 2,…, N.

Detalii

Problema Turnuri Operații I/O turnuri.in/turnuri.out
Limita timp 1.2 secunde Limita memorie Total: 64 MB / Stivă 32 MB
Id soluție #64962665 Utilizator Dubiț Darius (dubit)
Fișier turnuri.cpp Dimensiune 1.67 KB
Data încărcării 25 Iunie 2026, 21:45 Scor/rezultat 100 puncte

Evaluare

Mesaj compilare

turnuri.cpp: In function ‘int main()’:
turnuri.cpp:67:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   67 |             while (ptr<yf.size() && h[yf[ptr]]<h[xx])
      |                    ~~~^~~~~~~~~~
turnuri.cpp:73:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   73 |             while (ptr<xf.size() && h[xf[ptr]]<h[yy])
      |                    ~~~^~~~~~~~~~
turnuri.cpp:14:12: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   14 |     freopen("turnuri.in", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
turnuri.cpp:15:12: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   15 |     freopen("turnuri.out", "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~

Rezultat evaluare

Test Timp Mesaj evaluare Scor posibil Scor obținut
0 0.001 secunde OK. 5 5
1 0.001 secunde OK. 5 5
2 0.001 secunde OK. 5 5
3 0.001 secunde OK. 5 5
4 0.002 secunde OK. 5 5
5 0.002 secunde OK. 5 5
6 0.003 secunde OK. 5 5
7 0.003 secunde OK. 5 5
8 0.004 secunde OK. 5 5
9 0.002 secunde OK. 5 5
10 0.002 secunde OK. 5 5
11 0.001 secunde OK. 5 5
12 0.02 secunde OK. 5 5
13 0.032 secunde OK. 5 5
14 0.02 secunde OK. 5 5
15 0.021 secunde OK. 5 5
16 0.023 secunde OK. 5 5
17 0.038 secunde OK. 5 5
18 0.002 secunde OK. 10 10
Punctaj total 100

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 Turnuri 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!