<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1224_-_Restaurare</id>
	<title>1224 - Restaurare - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1224_-_Restaurare"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1224_-_Restaurare&amp;action=history"/>
	<updated>2026-05-03T00:21:54Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1224_-_Restaurare&amp;diff=10171&amp;oldid=prev</id>
		<title>RaulOtet: Pagină nouă: &lt;code&gt;restaurare.in&lt;/code&gt;  5  4 3 2 4 2  3  1 4 3 &lt;code&gt;restaurare.out&lt;/code&gt;  0  4  2 După descoperirea ruinelor unei cetăți medievale, arheologii au hotărât restaurarea acesteia, începând cu zidul principal. Acesta este format din &lt;code&gt;N&lt;/code&gt; piloni, fiecare cu lățimea de &lt;code&gt;1&lt;/code&gt; metru, așezați unul lângă altul (lipiți). Se cunoaște înălțimea, în metri, a fiecărui pilon dar, din păcate, nu toți mai sunt acum la același nivel.  Pentru restau...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1224_-_Restaurare&amp;diff=10171&amp;oldid=prev"/>
		<updated>2024-07-23T11:37:51Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: &amp;lt;code&amp;gt;restaurare.in&amp;lt;/code&amp;gt;  5  4 3 2 4 2  3  1 4 3 &amp;lt;code&amp;gt;restaurare.out&amp;lt;/code&amp;gt;  0  4  2 După descoperirea ruinelor unei cetăți medievale, arheologii au hotărât restaurarea acesteia, începând cu zidul principal. Acesta este format din &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; piloni, fiecare cu lățimea de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; metru, așezați unul lângă altul (lipiți). Se cunoaște înălțimea, în metri, a fiecărui pilon dar, din păcate, nu toți mai sunt acum la același nivel.  Pentru restau...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;code&amp;gt;restaurare.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 5&lt;br /&gt;
 4 3 2 4 2&lt;br /&gt;
 3&lt;br /&gt;
 1 4 3&lt;br /&gt;
&amp;lt;code&amp;gt;restaurare.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 0&lt;br /&gt;
 4&lt;br /&gt;
 2&lt;br /&gt;
După descoperirea ruinelor unei cetăți medievale, arheologii au hotărât restaurarea acesteia, începând cu zidul principal. Acesta este format din &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; piloni, fiecare cu lățimea de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; metru, așezați unul lângă altul (lipiți). Se cunoaște înălțimea, în metri, a fiecărui pilon dar, din păcate, nu toți mai sunt acum la același nivel.&lt;br /&gt;
&lt;br /&gt;
Pentru restaurarea zidului, arheologii dispun de cărămizi care au lățimea de câte &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; metru și lungimi variabile, exprimate în metri. Sunt disponibile oricâte cărămizi, de oricare lungime. Considerăm că toate cărămizile disponibile și toți pilonii care alcătuiesc zidul au aceeași grosime, de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; metru.&lt;br /&gt;
&lt;br /&gt;
Restaurarea constă în două etape:&lt;br /&gt;
&lt;br /&gt;
* în prima etapă, toți pilonii cu înălțimea mai mare sau egală cu &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt; se retează, aducându-se astfel la înălțimea &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt;, ceilalți, mai scunzi, păstrându-și înălțimea inițială;&lt;br /&gt;
* în a doua etapă se aduc toți pilonii la aceeași înălțime, umplându-se golurile dintre ei cu cărămizi, astfel încât  zidul să devină compact; din motive neînțelese, arheologii vor așeza cărămizile “culcate”, fiecare dintre acestea ocupând, eventual, spațiul aflat deasupra mai multor piloni.&lt;br /&gt;
&lt;br /&gt;
Arheologii au analizat situația, independent, pentru &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt; valori posibile ale lui &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Pentru fiecare dintre cele &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt; valori alese pentru înălțimea &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt;, se cere să se determine numărul minim de cărămizi necesare restaurării zidului, independent, pornind de la înălțimile inițiale ale pilonilor.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;restaurare.in&amp;lt;/code&amp;gt; conține:&lt;br /&gt;
&lt;br /&gt;
* pe prima linie, numărul &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; de piloni;&lt;br /&gt;
* pe a doua linie, &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale, separate prin câte un spațiu, reprezentând înălțimile inițiale ale pilonilor, în ordine, de la stânga la dreapta;&lt;br /&gt;
* pe linia a treia, numărul natural &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt;, reprezentând numărul de valori posibile pentru înălțimea &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt;;&lt;br /&gt;
* pe a patra linie, &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt; numere naturale, separate prin câte un spațiu, reprezentând valorile posibile ale lui &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;restaurare.out&amp;lt;/code&amp;gt; va conține &amp;lt;code&amp;gt;Q&amp;lt;/code&amp;gt; numere, câte unul pe linie, reprezentând numărul minim de cărămizi necesare restaurării pentru fiecare dintre înălțimile &amp;lt;code&amp;gt;H&amp;lt;/code&amp;gt;, în ordinea în care acestea apar în fișierul de intrare.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ N ≤ 100000&amp;lt;/code&amp;gt;;&lt;br /&gt;
* înălțimea fiecărui pilon este un număr natural din intervalul &amp;lt;code&amp;gt;[1 , 100000]&amp;lt;/code&amp;gt;;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ Q ≤ 100000&amp;lt;/code&amp;gt;;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ H ≤&amp;lt;/code&amp;gt; valoarea maximă dintre înălțimile inițiale ale pilonilor;&lt;br /&gt;
* pentru 35% dintre teste &amp;lt;code&amp;gt;N ≤ 1000&amp;lt;/code&amp;gt;, iar pentru alte 40% dintre teste &amp;lt;code&amp;gt;Q = 1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
&amp;lt;code&amp;gt;restaurare.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 5&lt;br /&gt;
 4 3 2 4 2&lt;br /&gt;
 3&lt;br /&gt;
 1 4 3&lt;br /&gt;
&amp;lt;code&amp;gt;restaurare.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 0&lt;br /&gt;
 4&lt;br /&gt;
 2&lt;br /&gt;
&lt;br /&gt;
= Explicație =&lt;br /&gt;
Forma inițială  a zidului este:&lt;br /&gt;
&lt;br /&gt;
Pentru &amp;lt;code&amp;gt;H=1&amp;lt;/code&amp;gt; toți pilonii au aceeași înălțime, deci nu mai este necesară nicio cărămidă, pentru &amp;lt;code&amp;gt;H=4&amp;lt;/code&amp;gt;, sunt necesare &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; cărămizi, zidul având, după restaurare structura din fig. a, iar pentru &amp;lt;code&amp;gt;H=3&amp;lt;/code&amp;gt;, sunt necesare &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; cărămizi, zidul având, după restaurare structura din fig. b.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def min_bricks_for_heights(piloni, H):&lt;br /&gt;
    total_bricks = 0&lt;br /&gt;
    current_height = 0&lt;br /&gt;
    &lt;br /&gt;
    for height in piloni:&lt;br /&gt;
        if height &amp;gt; H:&lt;br /&gt;
            height = H&lt;br /&gt;
        &lt;br /&gt;
        if height &amp;gt; current_height:&lt;br /&gt;
            total_bricks += 1&lt;br /&gt;
            current_height = height&lt;br /&gt;
        elif height &amp;lt; current_height:&lt;br /&gt;
            current_height = height&lt;br /&gt;
    &lt;br /&gt;
    return total_bricks&lt;br /&gt;
&lt;br /&gt;
def bricks_needed_for_restoration(piloni, H_values):&lt;br /&gt;
    results = []&lt;br /&gt;
    for H in H_values:&lt;br /&gt;
        results.append(min_bricks_for_heights(piloni, H))&lt;br /&gt;
    return results&lt;br /&gt;
&lt;br /&gt;
# Exemplu de utilizare&lt;br /&gt;
N = 5&lt;br /&gt;
piloni = [3, 1, 4, 1, 5]&lt;br /&gt;
Q = 3&lt;br /&gt;
H_values = [2, 3, 5]&lt;br /&gt;
&lt;br /&gt;
print(bricks_needed_for_restoration(piloni, H_values))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>RaulOtet</name></author>
	</entry>
</feed>