1082 - Triunghi 3

From Bitnami MediaWiki

Se consideră un triunghi alcătuit din numere naturale scrise pe n linii ca în figura alăturată. Liniile triunghiului sunt numerotate de la 1 la n, începând cu linia de la baza triunghiului (linia de jos), iar poziţiile pe linie sunt numerotate începând cu 1 de la stânga la dreapta.

Fiecare număr din triunghi, exceptând pe cele de pe linia 1, este egal cu suma numerelor aflate imediat sub el, în stânga şi respectiv în dreapta lui.

Cerinţă[edit | edit source]

Cunoscând câte un număr de pe fiecare linie a triunghiului, determinaţi toate numerele de pe linia 1.

Date de intrare[edit | edit source]

Fișierul de intrare triunghi3.in conține pe prima linie numărul natural n reprezentând numărul de linii din triunghi. Pe următoarele n linii sunt descrise informaţiile despre triunghi. Mai exact, pe linia i (1≤i≤n) dintre cele n se află două numere naturale separate prin spaţiu pi vi indicând poziţia şi respectiv valoarea numărului cunoscut de pe linia i a triunghiului.

Date de ieșire[edit | edit source]

Fișierul de ieșire triunghi3.out va conține o singură linie, pe care se găsesc n numere naturale separate prin câte un spaţiu, reprezentând în ordine de la stânga la dreapta numerele scrise pe linia 1 a triunghiului.

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 1000
  • 1 ≤ pi ≤ n+1-i, pentru 1≤i≤n
  • Toate numerele din triunghi sunt numere naturale cu cel mult 18 cifre.

Exemplu:[edit | edit source]

triunghi3.in

5
4 4
2 5
3 13
2 25
1 45

triunghi3.out

1 2 3 4 2

Încărcare soluție[edit | edit source]

Lipește codul aici[edit | edit source]

<syntaxhighlight lang="python" line="1"> ​

import sys

n = int(input())

a = [[0] * 1001

for i in range(1001)] x = [] for i in range(1, n+1):

  poz, nr = map(int, input().split())
  x.append((nr, poz))
  a[n-i+1][poz] = nr

for i in range(2, n+1):

  pz = x[n-i+1][1] - 1
  while pz >= 1:
      a[i][pz] = a[i-1][pz] - a[i][pz+1]
      pz -= 1
  pz = x[n-i+1][1] + 1
  while pz <= i:
      a[i][pz] = a[i-1][pz-1] - a[i][pz-1]
      pz += 1

for i in range(1, n+1):

  print(a[n][i], end=' ')

</syntaxhighlight>