<?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=0600_-_Romburi</id>
	<title>0600 - Romburi - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=0600_-_Romburi"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0600_-_Romburi&amp;action=history"/>
	<updated>2026-05-01T06:37:19Z</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=0600_-_Romburi&amp;diff=8150&amp;oldid=prev</id>
		<title>Ramona Dragoș: Pagină nouă: == Cerința == Plictisindu-se la ora de matematică, Gigel a luat o foaie de pătrățele cu n linii și m coloane și a început să deseneze romburi, fiecare având forma din imagine și diferite dimensiuni. Este posibil ca unele romburi să fie incomplet desenate, datorită apropierii de marginea foii. În plus, unele romburi se pot suprapune. În felul acesta o parte dintre pătrățelele de pe foaie sunt colorate, altele sunt intacte. Pentru fiecare romb desenat (chiar i...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0600_-_Romburi&amp;diff=8150&amp;oldid=prev"/>
		<updated>2023-12-15T17:21:51Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerința == Plictisindu-se la ora de matematică, Gigel a luat o foaie de pătrățele cu n linii și m coloane și a început să deseneze romburi, fiecare având forma din imagine și diferite dimensiuni. Este posibil ca unele romburi să fie incomplet desenate, datorită apropierii de marginea foii. În plus, unele romburi se pot suprapune. În felul acesta o parte dintre pătrățelele de pe foaie sunt colorate, altele sunt intacte. Pentru fiecare romb desenat (chiar i...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Cerința ==&lt;br /&gt;
Plictisindu-se la ora de matematică, Gigel a luat o foaie de pătrățele cu n linii și m coloane și a început să deseneze romburi, fiecare având forma din imagine și diferite dimensiuni. Este posibil ca unele romburi să fie incomplet desenate, datorită apropierii de marginea foii. În plus, unele romburi se pot suprapune. În felul acesta o parte dintre pătrățelele de pe foaie sunt colorate, altele sunt intacte. Pentru fiecare romb desenat (chiar incomplet), Gigel a notat pe altă foaie coordonatele (linie, coloană) colțului de sus și dimensiunea.&lt;br /&gt;
&lt;br /&gt;
Determinați numărul de pătrățele de pe foaie care sunt intacte, după desenarea romburilor.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare romburiin.txt conține pe prima linie numerele n m p. Următoarele p linii conțin numerele i j L, reprezentând un romb cu vârful de sus la coordonatele i j cu Lungimea laturii L.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire romburiout.txt va conține pe prima linie numărul C de pătrățele intacte.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*1 &amp;amp;les; n,m, L &amp;amp;les; 1000&lt;br /&gt;
*1 &amp;amp;les; p &amp;amp;les; 100&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
;romburiin.txt&lt;br /&gt;
:12 13 5&lt;br /&gt;
:4 5 4&lt;br /&gt;
:2 3 2&lt;br /&gt;
:3 8 3&lt;br /&gt;
:2 11 1&lt;br /&gt;
:8 11 5&lt;br /&gt;
;romburi.out&lt;br /&gt;
:24&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
;romburiin.txt&lt;br /&gt;
:0 0 0 &lt;br /&gt;
:0 0 0 &lt;br /&gt;
; Ieșire&lt;br /&gt;
: Nu au fost respectate cerintele impuse&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#0600 - Romburi&lt;br /&gt;
def is_valid_input(n, m, L, p_list):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1000 and 1 &amp;lt;= m &amp;lt;= 1000 and 1 &amp;lt;= L &amp;lt;= 1000):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    if not (1 &amp;lt;= p &amp;lt;= 100 for _, _, _, p in p_list):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def count_intact_squares(n, m, L, p_list):&lt;br /&gt;
    intact_squares = n * m&lt;br /&gt;
&lt;br /&gt;
    for i, j, L in p_list:&lt;br /&gt;
        top_left_row = max(0, i - L + 1)&lt;br /&gt;
        top_left_col = max(0, j - L + 1)&lt;br /&gt;
        bottom_right_row = min(n - 1, i + L - 1)&lt;br /&gt;
        bottom_right_col = min(m - 1, j + L - 1)&lt;br /&gt;
&lt;br /&gt;
        intact_squares -= (bottom_right_row - top_left_row + 1) * (bottom_right_col - top_left_col + 1)&lt;br /&gt;
&lt;br /&gt;
    return intact_squares&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;romburiin.txt&amp;quot;, &amp;quot;r&amp;quot;) as infile:&lt;br /&gt;
        n, m, p = map(int, infile.readline().split())&lt;br /&gt;
        p_list = [tuple(map(int, infile.readline().split())) for _ in range(p)]&lt;br /&gt;
&lt;br /&gt;
    if not is_valid_input(n, m, p, p_list):&lt;br /&gt;
        print(&amp;quot;Nu au fost respectate cerintele impuse.&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    result = count_intact_squares(n, m, p, p_list)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;romburiout.txt&amp;quot;, &amp;quot;w&amp;quot;) as outfile:&lt;br /&gt;
        outfile.write(str(result))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ramona Dragoș</name></author>
	</entry>
</feed>