1082 - Triunghi 3

From Bitnami MediaWiki
Revision as of 15:31, 11 December 2023 by Raul (talk | contribs) (Pagină nouă: Se consideră un triunghi alcătuit din numere naturale scrise pe <code>n</code> linii ca în figura alăturată. Liniile triunghiului sunt numerotate de la <code>1</code> la <code>n</code>, începând cu linia de la baza triunghiului (linia de jos), iar poziţiile pe linie sunt numerotate începând cu <code>1</code> de la stânga la dreapta. Fiecare număr din triunghi, exceptând pe cele de pe linia <code>1</code>, este egal cu suma numerelor aflate imediat sub el, în s...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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ţă

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

Date de intrare

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

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

  • 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:

triunghi3.in

5
4 4
2 5
3 13
2 25
1 45

triunghi3.out

1 2 3 4 2

Încărcare soluție

Lipește codul aici

1

import sys n = int(input()) a = [[0] * 1001 for _ 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=' ')