<?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=3865_-_Water_Front</id>
	<title>3865 - Water Front - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3865_-_Water_Front"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3865_-_Water_Front&amp;action=history"/>
	<updated>2026-05-02T21:11:05Z</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=3865_-_Water_Front&amp;diff=9085&amp;oldid=prev</id>
		<title>Andrada378 at 13:10, 5 January 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3865_-_Water_Front&amp;diff=9085&amp;oldid=prev"/>
		<updated>2024-01-05T13:10:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;//wiki.universitas.ro/index.php?title=3865_-_Water_Front&amp;amp;diff=9085&amp;amp;oldid=8144&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Andrada378</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3865_-_Water_Front&amp;diff=8144&amp;oldid=prev</id>
		<title>Andrada378: Pagină nouă: Enunt:  Pe faleza râului Prahova primarul oraşului Ploieşti a plantat un şir de N arbuşti ornamentali de diverse soiuri, fiecare arbust i având iniţial înălţimea height[i], 1 ≤ i ≤ N. În funcţie de solul în care este plantat şi de vreme, arbustul i creşte zilnic cu înălţimea dailyGrowth[i].  În fiecare zi grădinarul primăriei ajustează, prin tăiere cu o foarfecă, înălţimea arbuştilor. Totuşi, grădinarul este limitat de detaliile tehnice ale f...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3865_-_Water_Front&amp;diff=8144&amp;oldid=prev"/>
		<updated>2023-12-15T15:29:17Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Enunt:  Pe faleza râului Prahova primarul oraşului Ploieşti a plantat un şir de N arbuşti ornamentali de diverse soiuri, fiecare arbust i având iniţial înălţimea height[i], 1 ≤ i ≤ N. În funcţie de solul în care este plantat şi de vreme, arbustul i creşte zilnic cu înălţimea dailyGrowth[i].  În fiecare zi grădinarul primăriei ajustează, prin tăiere cu o foarfecă, înălţimea arbuştilor. Totuşi, grădinarul este limitat de detaliile tehnice ale f...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Enunt:&lt;br /&gt;
&lt;br /&gt;
Pe faleza râului Prahova primarul oraşului Ploieşti a plantat un şir de N arbuşti ornamentali de diverse soiuri, fiecare arbust i având iniţial înălţimea height[i], 1 ≤ i ≤ N. În funcţie de solul în care este plantat şi de vreme, arbustul i creşte zilnic cu înălţimea dailyGrowth[i].&lt;br /&gt;
&lt;br /&gt;
În fiecare zi grădinarul primăriei ajustează, prin tăiere cu o foarfecă, înălţimea arbuştilor. Totuşi, grădinarul este limitat de detaliile tehnice ale foarfecii. Astfel, acesta poate tăia la o tăietură exact x centimetri din înălţimea unui arbust dacă înălțimea este cel puțin x (de notat faptul că arbustul poate ajunge la înălțimea 0 după o tăietură). Pentru a nu se obosi, grădinarul poate să efectueze într-o zi cel mult k tăieturi. Grădinarul poate să efectueze mai multe tăieturi asupra unui arbust într-o zi.&lt;br /&gt;
&lt;br /&gt;
Atenție! În fiecare zi arbustul întâi crește și apoi se fac tăierile.&lt;br /&gt;
&lt;br /&gt;
Cerinta:&lt;br /&gt;
&lt;br /&gt;
Primarul organizează după M zile un eveniment artistic şi doreşte să aflaţi care este înălţimea minimă a celui mai înalt arbust după cele M zile.&lt;br /&gt;
&lt;br /&gt;
Date de intrare:&lt;br /&gt;
&lt;br /&gt;
De la tastatură se citesc de pe prima linie numerele naturale N, M, k şi x. Pe următoarele N linii se află câte două numere naturale height[i] şi dailyGrowth[i], separate prin spaţiu.&lt;br /&gt;
&lt;br /&gt;
Date de iesire&lt;br /&gt;
&lt;br /&gt;
Afișați la ecran un număr nenegativ reprezentând înălţimea minimă a celui mai înalt arbust după cele M zile.&lt;br /&gt;
&lt;br /&gt;
Restrictii si precizari:&lt;br /&gt;
&lt;br /&gt;
1 ≤ k ≤ 1.000&lt;br /&gt;
&lt;br /&gt;
1 ≤ x ≤ 10.000&lt;br /&gt;
&lt;br /&gt;
0 ≤ height[i] ≤ 10.000&lt;br /&gt;
&lt;br /&gt;
0 ≤ dailyGrowth[i] ≤ 10.000&lt;br /&gt;
&lt;br /&gt;
Pentru 8 puncte, N ≤ 100, M = 1, k = 1, x = 1, height[i] ≥ 1, dailyGrowth[i] = 0&lt;br /&gt;
&lt;br /&gt;
Pentru 22 puncte, 1 ≤ N, M ≤ 500&lt;br /&gt;
&lt;br /&gt;
Pentru 43 puncte, 1 ≤ N, M  5.000&lt;br /&gt;
&lt;br /&gt;
Pentru 27 puncte, 1 ≤ N, M ≤ 10.000&lt;br /&gt;
&lt;br /&gt;
Exemplu:&lt;br /&gt;
&lt;br /&gt;
Intrare:&lt;br /&gt;
&lt;br /&gt;
4 3 4 3&lt;br /&gt;
&lt;br /&gt;
2 5&lt;br /&gt;
&lt;br /&gt;
3 2&lt;br /&gt;
&lt;br /&gt;
0 4&lt;br /&gt;
&lt;br /&gt;
2 8 ,  fara spatiu intre randuri&lt;br /&gt;
&lt;br /&gt;
Iesire&lt;br /&gt;
&lt;br /&gt;
8&lt;br /&gt;
&lt;br /&gt;
Rezolvare&lt;br /&gt;
&lt;br /&gt;
def calculate_height(N, M, k, x, heights, daily_growths):&lt;br /&gt;
&lt;br /&gt;
    max_height = max(heights)&lt;br /&gt;
&lt;br /&gt;
    for day in range(M):&lt;br /&gt;
&lt;br /&gt;
        cut_heights = [min(heights[i], k * x) for i in range(N)]  # Înălțimile pe care le putem tăia în ziua respectivă&lt;br /&gt;
&lt;br /&gt;
        total_cut = min(sum(cut_heights), k * x * N)  # Totalul pe care îl putem tăia în ziua respectivă&lt;br /&gt;
&lt;br /&gt;
        for i in range(N):&lt;br /&gt;
&lt;br /&gt;
            cut = min(heights[i], total_cut)  # Cantitatea pe care o tăiem din arbustul i&lt;br /&gt;
&lt;br /&gt;
            heights[i] -= cut  # Efectuăm tăierea&lt;br /&gt;
&lt;br /&gt;
            total_cut -= cut  # Scădem cantitatea tăiată din total&lt;br /&gt;
&lt;br /&gt;
            heights[i] += daily_growths[i]  # Creștem înălțimile zilnice&lt;br /&gt;
&lt;br /&gt;
        max_height = max(max(heights), max_height)&lt;br /&gt;
&lt;br /&gt;
    return max_height&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
&lt;br /&gt;
    N, M, k, x = map(int, input().split())&lt;br /&gt;
&lt;br /&gt;
    heights = []&lt;br /&gt;
&lt;br /&gt;
    daily_growths = []&lt;br /&gt;
&lt;br /&gt;
    for _ in range(N):&lt;br /&gt;
&lt;br /&gt;
        h, d = map(int, input().split())&lt;br /&gt;
&lt;br /&gt;
        heights.append(h)&lt;br /&gt;
&lt;br /&gt;
        daily_growths.append(d)&lt;br /&gt;
&lt;br /&gt;
    result = calculate_height(N, M, k, x, heights, daily_growths)&lt;br /&gt;
&lt;br /&gt;
    print(result)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    main()&lt;/div&gt;</summary>
		<author><name>Andrada378</name></author>
	</entry>
</feed>