<?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=2728_-_Skyline</id>
	<title>2728 - Skyline - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2728_-_Skyline"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2728_-_Skyline&amp;action=history"/>
	<updated>2026-05-01T22:36:15Z</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=2728_-_Skyline&amp;diff=8276&amp;oldid=prev</id>
		<title>Raul: Pagină nouă: Uitându-ne din New Jersey către New York, Manhattan, departe, în zare, se văd zgârie norii. De la distanță, nu distingem clădirile, ci numai o linie formată din segmente orizontale și verticale, așa numita skyline.  = Cerința = Determinați care este aria celui mai mare dreptunghi care se poate înscrie în skyline.  = Date de intrare = Prima linie a fișierului &lt;code&gt;skyline.in&lt;/code&gt; va conține numărul &lt;code&gt;n&lt;/code&gt; de segmente orizontale din linie. Pe următ...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2728_-_Skyline&amp;diff=8276&amp;oldid=prev"/>
		<updated>2023-12-21T15:55:18Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Uitându-ne din New Jersey către New York, Manhattan, departe, în zare, se văd zgârie norii. De la distanță, nu distingem clădirile, ci numai o linie formată din segmente orizontale și verticale, așa numita skyline.  = Cerința = Determinați care este aria celui mai mare dreptunghi care se poate înscrie în skyline.  = Date de intrare = Prima linie a fișierului &amp;lt;code&amp;gt;skyline.in&amp;lt;/code&amp;gt; va conține numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; de segmente orizontale din linie. Pe următ...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Uitându-ne din New Jersey către New York, Manhattan, departe, în zare, se văd zgârie norii. De la distanță, nu distingem clădirile, ci numai o linie formată din segmente orizontale și verticale, așa numita skyline.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Determinați care este aria celui mai mare dreptunghi care se poate înscrie în skyline.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Prima linie a fișierului &amp;lt;code&amp;gt;skyline.in&amp;lt;/code&amp;gt; va conține numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; de segmente orizontale din linie. Pe următoarele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii vor fi trecute perechi de numere &amp;lt;code&amp;gt;h l&amp;lt;/code&amp;gt;, reprezentând înălțimea și lungimea fiecărui segment.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;skyline.out&amp;lt;/code&amp;gt; va conține un singur număr, aria celui mai mare dreptunghi conținut în skyine.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 40.000&amp;lt;/code&amp;gt;;&lt;br /&gt;
* &amp;lt;code&amp;gt;0 ≤ h ≤ 2.000.000.000&amp;lt;/code&amp;gt;;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ l ≤ 50.000&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Dreptunghiul maximal are laturile verticale şi orizontale.&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
&amp;lt;code&amp;gt;skyline.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 7&lt;br /&gt;
 4 3&lt;br /&gt;
 11 6&lt;br /&gt;
 8 2&lt;br /&gt;
 9 4&lt;br /&gt;
 2 2&lt;br /&gt;
 4 9&lt;br /&gt;
 8 9&lt;br /&gt;
&amp;lt;code&amp;gt;skyline.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 96&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Cel mai mare dreptunghi care se poate înscrie începe la coordonatele &amp;lt;code&amp;gt;(3, 0)&amp;lt;/code&amp;gt; şi are laturile de lungime &amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Încărcare soluție ==&lt;br /&gt;
&lt;br /&gt;
=== Lipește codul aici ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    sys.stdin = open(&amp;#039;skyline.in&amp;#039;, &amp;#039;r&amp;#039;)&lt;br /&gt;
    sys.stdout = open(&amp;#039;skyline.out&amp;#039;, &amp;#039;w&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    S = [0] * 40005&lt;br /&gt;
    D = [0] * 40005&lt;br /&gt;
    v = [0] * 40005&lt;br /&gt;
    sum = [0] * 40005&lt;br /&gt;
    maxarea = 0&lt;br /&gt;
&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        v[i], vf = map(int, input().split())&lt;br /&gt;
        sum[i] = sum[i-1] + vf&lt;br /&gt;
&lt;br /&gt;
    vf = 0&lt;br /&gt;
    stiva = [0] * 40005&lt;br /&gt;
    stiva[vf] = n + 1&lt;br /&gt;
    for i in range(n, 0, -1):&lt;br /&gt;
        while vf &amp;gt; 0 and v[i] &amp;lt;= v[stiva[vf]]:&lt;br /&gt;
            vf -= 1&lt;br /&gt;
        D[i] = stiva[vf]&lt;br /&gt;
        vf += 1&lt;br /&gt;
        stiva[vf] = i&lt;br /&gt;
&lt;br /&gt;
    vf = 0&lt;br /&gt;
    stiva = [0] * 40005&lt;br /&gt;
    stiva[vf] = 0&lt;br /&gt;
    for i in range(n + 1):&lt;br /&gt;
        while vf &amp;gt; 0 and v[i] &amp;lt;= v[stiva[vf]]:&lt;br /&gt;
            vf -= 1&lt;br /&gt;
        S[i] = stiva[vf]&lt;br /&gt;
        vf += 1&lt;br /&gt;
        stiva[vf] = i&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        maxarea = max(maxarea, v[i] * (sum[D[i] - 1] - sum[S[i]]))&lt;br /&gt;
&lt;br /&gt;
    print(maxarea)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Raul</name></author>
	</entry>
</feed>