<?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=1071_-_OZN</id>
	<title>1071 - OZN - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1071_-_OZN"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1071_-_OZN&amp;action=history"/>
	<updated>2026-05-01T09:54:55Z</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=1071_-_OZN&amp;diff=9646&amp;oldid=prev</id>
		<title>Raul: Pagină nouă: O invazie de &lt;code&gt;N&lt;/code&gt; farfurii zburătoare (denumite uzual OZN) dă bătăi de cap autorităţilor. În fiecare astfel de OZN se află extratereştri care au ca misiune distrugerea planetei noastre. Radarul care a detectat invazia are un ecran similar cu planul &lt;code&gt;XOY&lt;/code&gt;. Fiecare OZN este reprezentat pe ecran printr-un segment de dreaptă.  Pentru anihilarea OZN-urilor, autorităţile dispun de &lt;code&gt;K&lt;/code&gt; arme laser. Armele sunt poziţionate pe sol (ilustrat...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1071_-_OZN&amp;diff=9646&amp;oldid=prev"/>
		<updated>2024-02-15T10:28:59Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: O invazie de &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; farfurii zburătoare (denumite uzual OZN) dă bătăi de cap autorităţilor. În fiecare astfel de OZN se află extratereştri care au ca misiune distrugerea planetei noastre. Radarul care a detectat invazia are un ecran similar cu planul &amp;lt;code&amp;gt;XOY&amp;lt;/code&amp;gt;. Fiecare OZN este reprezentat pe ecran printr-un segment de dreaptă.  Pentru anihilarea OZN-urilor, autorităţile dispun de &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; arme laser. Armele sunt poziţionate pe sol (ilustrat...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;O invazie de &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; farfurii zburătoare (denumite uzual OZN) dă bătăi de cap autorităţilor. În fiecare astfel de OZN se află extratereştri care au ca misiune distrugerea planetei noastre. Radarul care a detectat invazia are un ecran similar cu planul &amp;lt;code&amp;gt;XOY&amp;lt;/code&amp;gt;. Fiecare OZN este reprezentat pe ecran printr-un segment de dreaptă.&lt;br /&gt;
&lt;br /&gt;
Pentru anihilarea OZN-urilor, autorităţile dispun de &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; arme laser. Armele sunt poziţionate pe sol (ilustrat pe ecranul radarului prin axa &amp;lt;code&amp;gt;OX&amp;lt;/code&amp;gt;). Fiecare armă emite o rază laser, ilustrată pe ecran printr-o paralelă cu axa &amp;lt;code&amp;gt;OY&amp;lt;/code&amp;gt;. Dacă o rază laser intersectează segmentul de pe ecranul radarului corespunzător unui OZN, raza va omorî toţi extratereştrii aflaţi în OZN-ul respectiv.&lt;br /&gt;
&lt;br /&gt;
Din păcate, în preajmă se află doar un militar specializat în arme laser, aşa că autorităţile doresc să ştie exact ce armă trebuie să folosească acesta pentru a distruge cât mai mulţi extratereştri.&lt;br /&gt;
&lt;br /&gt;
= Cerinţă =&lt;br /&gt;
Ajutaţi autorităţile să determine numărul de extratereştri care pot fi anihilaţi cu fiecare armă din dotare.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;ozn.in&amp;lt;/code&amp;gt; conține pe prima linie două numere naturale separate prin spaţiu &amp;lt;code&amp;gt;N K&amp;lt;/code&amp;gt; reprezentând numărul de OZN-uri şi respectiv numărul de arme laser. Pe următoarele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii sunt descrise cele N OZN-uri, câte unul pe linie. Un OZN este descris prin &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; numere naturale separate prin câte un spaţiu &amp;lt;code&amp;gt;x1 y1 x2 y2 nr&amp;lt;/code&amp;gt;, reprezentând în ordine coordonatele capetelor segmentului corespunzător &amp;lt;code&amp;gt;(x1, y1)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(x2, y2)&amp;lt;/code&amp;gt;, iar &amp;lt;code&amp;gt;nr&amp;lt;/code&amp;gt; – numărul de extratereştri din el. Pe ultima linie se găsesc &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; numere naturale &amp;lt;code&amp;gt;a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;a&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;a&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt; … &amp;lt;code&amp;gt;a&amp;lt;sub&amp;gt;K&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;, separate prin câte un spaţiu, reprezentând coordonatele pe axa &amp;lt;code&amp;gt;OX&amp;lt;/code&amp;gt; (abscisele) unde sunt amplasate armele laser.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;ozn.out&amp;lt;/code&amp;gt; va conține &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; linii. Pe linia &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; va fi scris numărul total de extratereştri care pot fi distruşi cu arma &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;, considerând armele numerotate î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 ≤ 20 000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ K ≤ 20 000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤&amp;lt;/code&amp;gt; orice coordonată din fişierul de intrare &amp;lt;code&amp;gt;≤ 2 000 000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ nr ≤ 100&amp;lt;/code&amp;gt;, pentru orice OZN&lt;br /&gt;
* &amp;lt;code&amp;gt;x&amp;lt;sub&amp;gt;1 &amp;lt; x2&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;sub&amp;gt;, pentru orice OZN&amp;lt;/sub&amp;gt;&lt;br /&gt;
* Pe ecranul radarului segmentele ce descriu navele se pot intersecta.&lt;br /&gt;
* Dacă raza laser trece prin unul dintre capetele unui OZN atunci acesta este distrus.&lt;br /&gt;
* Pentru 50% dintre testele de intrare &amp;lt;code&amp;gt;1 ≤ N*K ≤ 10 000 000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
&amp;lt;code&amp;gt;ozn.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 5 3&lt;br /&gt;
 1 1 3 2 2&lt;br /&gt;
 2 3 4 1 3&lt;br /&gt;
 6 5 8 5 8&lt;br /&gt;
 5 1 7 1 6&lt;br /&gt;
 6 2 7 4 1&lt;br /&gt;
 3 7 5&lt;br /&gt;
&amp;lt;code&amp;gt;ozn.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 5&lt;br /&gt;
 15&lt;br /&gt;
 6&lt;br /&gt;
Explicație&lt;br /&gt;
&lt;br /&gt;
Arma care emite din punctul &amp;lt;code&amp;gt;(3,0)&amp;lt;/code&amp;gt; doboară farfuriile reprezentate de segmentele &amp;lt;code&amp;gt;{(1,1)(3,2)}&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;{(2,3)(4,1)}&amp;lt;/code&amp;gt; distrugând în total &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; extratereştri.&lt;br /&gt;
&lt;br /&gt;
Arma care emite din punctul &amp;lt;code&amp;gt;(7,0)&amp;lt;/code&amp;gt; doboară farfuriile reprezentate de segmentele &amp;lt;code&amp;gt;{(5,1)(7,1)}, {(6,2)(7,4)}&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;{(6,5)(8,5)}&amp;lt;/code&amp;gt; distrugând în total &amp;lt;code&amp;gt;15&amp;lt;/code&amp;gt; extratereştri.&lt;br /&gt;
&lt;br /&gt;
Arma care emite din punctul &amp;lt;code&amp;gt;(5,0)&amp;lt;/code&amp;gt; doboară farfuria reprezentată de segmentul &amp;lt;code&amp;gt;{(5,1)(7,1)}&amp;lt;/code&amp;gt; şi distruge &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; extratereştri.&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;
MAXX = 2000010&lt;br /&gt;
MAXN = 100010&lt;br /&gt;
&lt;br /&gt;
f = open(&amp;quot;ozn.in&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
g = open(&amp;quot;ozn.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
A = [0] * MAXX&lt;br /&gt;
N, K = map(int, f.readline().split())&lt;br /&gt;
X1, Y1, X2, Y2, nr, i = 0, 0, 0, 0, 0, 0&lt;br /&gt;
&lt;br /&gt;
for i in range(1, N + 1):&lt;br /&gt;
    X1, Y1, X2, Y2, nr = map(int, f.readline().split())&lt;br /&gt;
    A[X1] += nr&lt;br /&gt;
    A[X2 + 1] -= nr&lt;br /&gt;
&lt;br /&gt;
for i in range(1, MAXX):&lt;br /&gt;
    A[i] += A[i - 1]&lt;br /&gt;
&lt;br /&gt;
for i in range(1, K + 1):&lt;br /&gt;
    X1 = int(f.readline())&lt;br /&gt;
    g.write(str(A[X1]) + &amp;#039;\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
g.close()&lt;br /&gt;
f.close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Raul</name></author>
	</entry>
</feed>