Lizuca are n
flori ornamentale de înălţimi h
1
, h
2
, …, h
n
, exprimate în centimetri. Pentru a uda plantele, Lizuca stabileşte următorul program: în prima zi va alege o plantă pe care o va uda, în a doua zi va alege două plante pe care le va uda, în ziua a treia va alege trei plante pe care le va uda şi aşa mai departe. Dacă o plantă este udată într-o anumită zi, atunci creşte 1
centimetru până la sfârşitul acelei zile, iar dacă nu este udată, rămâne la înălţimea pe care o avea la sfârşitul zilei precedente.
Cerinţa
Scrieţi un program care determină:
a) un număr natural S
, exprimat în centimetri, reprezentând suma înălţimilor finale ale tuturor plantelor, dacă Lizuca le-ar uda după procedeul descris, timp de n
zile;
b) un număr natural K
, reprezentând numărul maxim de zile în care Lizuca poate uda florile după procedeul descris anterior, astfel ca la sfârşitul celei de a K
-a zi, nicio plantă ornamentală să nu atingă înălţimea H
.
Date de intrare
Fișierul de intrare flori1.in
conține pe prima linie două numere naturale n
şi H
, separate printr-un spaţiu, având semnificaţia din enunţ. Linia a doua conţine n numere naturale: h
1
, h
2
, …, h
n
, separate prin câte un singur spaţiu, reprezentând înălţimile iniţiale ale plantelor.
Date de ieșire
Fișierul de ieșire flori1.out
va conține pe prima linie un număr natural S
având semnificaţia descrisă în cerinţa a).
A doua linie va conţine un număr natural K
, având semnificaţia descrisă în cerinţa b).
Restricții și precizări
1 ≤ N, H ≤ 100
1 ≤ h
1
, h
2
, ... h
n
< H
- O plantă poate fi udată o singură dată pe zi.
- Pentru rezolvarea corectă a cerinţei a) se acordă 30 % din punctajul total pentru fiecare test.
- Pentru rezolvarea corectă a cerinţei b) se acordă 70 % din punctajul total pentru fiecare test.
Exemplul 1
flori1.in
3 4 2 1 1
flori1.out
10 2
Explicație
Dacă în prima zi se udă planta 3
, atunci înălţimile devin: 2 1 2
Dacă în a doua zi se udă plantele 1
şi 2
, atunci înălţimile devin: 3 2 2
Procedeul se opreşte aici, deoarece în ziua a treia, ar trebui să se ude toate plantele, iar planta 1
ar ajunge să aibă înălţimea 4
Exemplul 2
flori1.in
4 5 1 3 2 1
flori1.out
17 3
Explicație
Dacă în prima zi se udă planta 1
, atunci înălţimile devin: 2 3 2 1
Dacă în a doua zi se udă plantele 1
şi 4
, atunci înălţimile devin: 3 3 2 2
Dacă în a treia zi se udă plantele 1
, 3
şi 4
, atunci înălţimile devin: 4 3 3 3
.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Flori1:
#include <fstream>
using namespace std;
ifstream fin("flori1.in");
ofstream fout("flori1.out");
int N, K, H;
int h[100];
int S;
int main()
{
fin >> N >> H;
for ( int i = 0; i < N; ++i )
{
fin >> h[i];
S += h[i];
}
// Cerinta a)
for (int i = 1; i <= N; ++i )
S += i;
fout << S << '\n';
// Cerinta b)
bool ok = true;
while ( ok )
{
for ( int i = 0; i < N - 1; ++i )
for ( int j = i + 1; j < N; ++j )
if ( h[i] > h[j] )
{
int aux = h[i];
h[i] = h[j];
h[j] = aux;
}
for (int i = 0; i <= K && ok; ++i )
if ( h[i] + 1 >= H )
ok = false;
if ( ok )
{
for (int i = 0; i <= K; ++i )
h[i]++;
K++;
}
}
fout << K << '\n';
fin.close();
fout.close();
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #1062 Flori1
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1062 Flori1 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!