Lista de probleme 2

Se dă o matrice cu numere naturale nenule, pătratică, cu liniile şi coloanele numerotate de la 1 la N. Fiecare număr din matrice reprezintă înălţimea unui pilon plasat în acea poziţie.

Putem plasa un observator “sub” matrice (adică pe o poziţie i j cu i > N şi 1 ≤ j ≤ N), de unde poate vedea în 3 direcţii:

  • nord (pe coloana j);
  • nord-vest (elemente din matrice de pe poziţii is,js cu i - is = j - js, dacă există astfel de elemente);
  • nord-est (elemente din matrice de pe poziţii is,js cu i - is = js - j, dacă există astfel de elemente);

Se cunoaşte configuraţia matricei şi mai multe poziţii posibile ale observatorului. Să se determine, pentru fiecare poziţie, numărul de piloni pe care îi vede observatorul plasat acolo.

La ora de matematică Georgică a învăţat să evalueze expresii aritmetice. Pentru a verifica acest lucru profesorul de informatică îi propune lui Georgică să evalueze expresii aritmetice de forma:

A o1 B o2 C

Unde A, B, C sunt operanzi, iar o1 şi o2 operatori.

Valorile permise operanzilor pot fi numai termeni din şirul x1 , x2 , …, xn , iar operatorii pot fi numai caracterele + (adunare) şi * (înmulţire).

Profesorul îi pune la dispoziţie lui Georgică o valoare numerică V şi îi cere să determine valorile operanzilor A, B şi C pentru care expresia are valoarea V.

Scrieţi un program, care pentru V, n, x1 , x2 , …, xn şi o1 , o2 , date determină indicii corespunzători termenilor din şirul x1 , x2 , …, xn ce corespund valorilor operanzilor A, B şi C pentru ca expresia dată să aibă valoarea V.