Enunt
Carmen, piticul de gradina vrea sa meargă în vizita la piticul Tulosba. Pentru a ajunge la Tulosba, Carmen trebuie sa meargă printr-o rețea de N galerii, fiecare alcătuită din M sectoare.
Rețeaua poate fi reprezentată printr-un tablou cu N linii, numerotate de la 1 la N și M coloane, numerotate de la 1 la M . Carmen ocupă sectorul 1 al galeriei 1. Tulosba ocupă sectorul M al galeriei 1.
La galeria n se termina rețeaua și începe gradina unde sunt niște copii răi care vor sa-l spargă pe Carmen cu bâtele de Baseball.
Dacă sectorul curent a lui Carmen este (i,j), atunci se poate deplasa:
- La dreapta, ajungând în sectorul
(i,j+1). - Pe diagonala la dreapta în sus, ajungând în sectorul
(i-1,j+1). - Pe diagonala la dreapta în jos, ajungând în sectorul
(i+1,j+1).
Cerința
Sa se afișeze în câte moduri poate Carmen sa ajungă la Tulosba.
Date de intrare
Fișierul de intrare pitic.in conține pe prima linie numerele n și m cu semnificația din problema.
Date de ieșire
Fișierul de ieșire pitic.out va conține pe prima linie numărul S, reprezentând în câte moduri poate sa ajungă Carmen la Tulosba.
Restricții și precizări
- Carmen nu poate sa coboare sub nivelul
1 - Carmen nu poate sa urce mai sus de nivelul
npentru ca o sa fie spart de copii 1 ≤ n ≤ 431 ≤ m ≤ 43
Exemplu
pitic.in
3 3
pitic.out
2
pitic.in
7 1
pitic.out
1
pitic.in
4 4
pitic.out
4
Explicație
Exemplul 1 : Piticul Carmen poate sa meargă de 2 ori la dreapta sau o dată pe diagonala în sus la dreapta și odată pe diagonala în jos la dreapta.
Exemplul 2 : Piticul Carmen poate sa meargă doar la dreapta deoarece dacă urca pe nivelul 2 o sa ajungă în gradina.
Exemplul 3 :
- Modul 1: Dreapta de 3 ori
- Modul 2: Diagonala sus, Diagonala jos, Dreapta
- Modul 3: Diagonala sus, Dreapta , Diagonala jos
- Modul 4: Dreapta, Diagonala sus, Diagonala jos
#include <bits/stdc++.h>
using namespace std;
ifstream cin("pitic.in");
ofstream cout("pitic.out");
long long n , m , a[45][45];
int main()
{
cin >> n >> m;
a[1][1] = 1;
for(int j = 1 ; j <= m ; j++)
for(int i = 1 ; i <= n ; i++)
a[i][j] += a[i + 1][j - 1] + a[i][j - 1] + a[i - 1][j - 1];
cout << a[1][m];
}