<?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=1226_-_Nebuni</id>
	<title>1226 - Nebuni - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1226_-_Nebuni"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1226_-_Nebuni&amp;action=history"/>
	<updated>2026-05-02T06:58:48Z</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=1226_-_Nebuni&amp;diff=9741&amp;oldid=prev</id>
		<title>Cristina94: Pagină nouă: ==Enunţ== Pe o tablă de şah cu N linii şi N coloane sunt plasaţi M nebuni. După cum se ştie de la jocul de şah, nebunii atacă doar în diagonală.  O poziţie de pe tabla de şah este considerată sigură dacă nu este atacată de niciun nebun aflat pe tablă.  ==Cerinţă== Scrieţi un program care să determine numărul de poziţii sigure de pe tabla de şah.  ==Date de intrare== Fișierul de intrare nebuni.in conține pe prima linie numerele naturale N M, separate...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1226_-_Nebuni&amp;diff=9741&amp;oldid=prev"/>
		<updated>2024-04-01T04:55:55Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: ==Enunţ== Pe o tablă de şah cu N linii şi N coloane sunt plasaţi M nebuni. După cum se ştie de la jocul de şah, nebunii atacă doar în diagonală.  O poziţie de pe tabla de şah este considerată sigură dacă nu este atacată de niciun nebun aflat pe tablă.  ==Cerinţă== Scrieţi un program care să determine numărul de poziţii sigure de pe tabla de şah.  ==Date de intrare== Fișierul de intrare nebuni.in conține pe prima linie numerele naturale N M, separate...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Enunţ==&lt;br /&gt;
Pe o tablă de şah cu N linii şi N coloane sunt plasaţi M nebuni. După cum se ştie de la jocul de şah, nebunii atacă doar în diagonală.&lt;br /&gt;
&lt;br /&gt;
O poziţie de pe tabla de şah este considerată sigură dacă nu este atacată de niciun nebun aflat pe tablă.&lt;br /&gt;
&lt;br /&gt;
==Cerinţă==&lt;br /&gt;
Scrieţi un program care să determine numărul de poziţii sigure de pe tabla de şah.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Fișierul de intrare nebuni.in conține pe prima linie numerele naturale N M, separate prin spaţiu, cu semnificaţia din enunţ. Pe următoarele M linii sunt descrise poziţiile (linia şi coloana, separate prin spaţiu) celor M nebuni, câte un nebun pe o linie a fişierului.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Fișierul de ieșire nebuni.out va conține o singură linie pe care va fi scris un număr natural reprezentând numărul de poziţii sigure de pe tabla de şah.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
1 ≤ N ≤ 1 000 000&lt;br /&gt;
1 ≤ M &amp;lt; 16 500&lt;br /&gt;
Liniile şi coloanele sunt numerotate de la 1 la N.&lt;br /&gt;
Pentru 50% dintre teste N ≤ 300.&lt;br /&gt;
Pentru 60% dintre teste M ≤ 1000.&lt;br /&gt;
&lt;br /&gt;
==Exemplu 1==&lt;br /&gt;
;nebuni.in&lt;br /&gt;
:5 4&lt;br /&gt;
:2 1&lt;br /&gt;
:1 3&lt;br /&gt;
:4 2&lt;br /&gt;
:5 2&lt;br /&gt;
&lt;br /&gt;
;nebuni.out&lt;br /&gt;
:6&lt;br /&gt;
&lt;br /&gt;
==Exemplu 2==&lt;br /&gt;
;nebuni.in&lt;br /&gt;
:10 3&lt;br /&gt;
:1 1&lt;br /&gt;
:15 8&lt;br /&gt;
:5 12&lt;br /&gt;
&lt;br /&gt;
;nebuni.out&lt;br /&gt;
:Date de intrare invalide.&lt;br /&gt;
&lt;br /&gt;
==Rezolvare==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1226 Nebuni&lt;br /&gt;
def verificare_date_intrare(N, M, nebuni):&lt;br /&gt;
  if not (1 &amp;lt;= N &amp;lt;= 1000000):&lt;br /&gt;
    return False&lt;br /&gt;
  if not (1 &amp;lt;= M &amp;lt; 16500):&lt;br /&gt;
    return False&lt;br /&gt;
  for x, y in nebuni:&lt;br /&gt;
    if not (1 &amp;lt;= x &amp;lt;= N and 1 &amp;lt;= y &amp;lt;= N):&lt;br /&gt;
      return False&lt;br /&gt;
  return True&lt;br /&gt;
&lt;br /&gt;
def numar_pozitii_sigure(N, M, nebuni):&lt;br /&gt;
  # Inițializăm o matrice pentru tabla de șah și o marcam pe toate pozițiile atacate de nebuni&lt;br /&gt;
  tabla = [[False] * N for _ in range(N)]&lt;br /&gt;
  for x, y in nebuni:&lt;br /&gt;
    for i in range(N):&lt;br /&gt;
      for j in range(N):&lt;br /&gt;
        if abs(x - i) == abs(y - j):&lt;br /&gt;
          tabla[i][j] = True&lt;br /&gt;
&lt;br /&gt;
  # Numărăm pozițiile sigure care nu sunt atacate de niciun nebun&lt;br /&gt;
  numar_pozitii_sigure = 0&lt;br /&gt;
  for i in range(N):&lt;br /&gt;
    for j in range(N):&lt;br /&gt;
      if not tabla[i][j]:&lt;br /&gt;
        numar_pozitii_sigure += 1&lt;br /&gt;
&lt;br /&gt;
  return numar_pozitii_sigure&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
  # Citim datele de intrare&lt;br /&gt;
  try:&lt;br /&gt;
    with open(&amp;quot;nebuni.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
      N, M = map(int, fin.readline().split())&lt;br /&gt;
      nebuni = [tuple(map(int, line.split())) for line in fin]&lt;br /&gt;
  except ValueError:&lt;br /&gt;
    # Date invalide&lt;br /&gt;
    with open(&amp;quot;nebuni.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
      fout.write(&amp;quot;Date invalide\n&amp;quot;)&lt;br /&gt;
    return&lt;br /&gt;
&lt;br /&gt;
  # Verificăm datele de intrare&lt;br /&gt;
  if not verificare_date_intrare(N, M, nebuni):&lt;br /&gt;
    with open(&amp;quot;nebuni.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
      fout.write(&amp;quot;Date de intrare invalide.\n&amp;quot;)&lt;br /&gt;
    return&lt;br /&gt;
&lt;br /&gt;
  # Determinăm numărul de poziții sigure&lt;br /&gt;
  rezultat = numar_pozitii_sigure(N, M, nebuni)&lt;br /&gt;
&lt;br /&gt;
  # Scriem rezultatul în fișierul de ieșire&lt;br /&gt;
  with open(&amp;quot;nebuni.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    fout.write(str(rezultat) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
  main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cristina94</name></author>
	</entry>
</feed>