#include <bits/stdc++.h>
using namespace std;
int nthFibonacciUtil(int n, vector<int>& memo) {
if (n <= 1) {
return n;
}
if (memo[n] != -1) {
return memo[n];
}
memo[n] = nthFibonacciUtil(n - 1, memo)
+ nthFibonacciUtil(n - 2, memo);
return memo[n];
}
int nthFibonacci(int n) {
vector<int> memo(n + 1, -1);
return nthFibonacciUtil(n, memo);
}
int main() {
int n = 5;
int result = nthFibonacci(n);
cout << result << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbnRoRmlib25hY2NpVXRpbChpbnQgbiwgdmVjdG9yPGludD4mIG1lbW8pIHsKICAgIGlmIChuIDw9IDEpIHsKICAgICAgICByZXR1cm4gbjsKICAgIH0KICAgIGlmIChtZW1vW25dICE9IC0xKSB7CiAgICAgICAgcmV0dXJuIG1lbW9bbl07CiAgICB9CiAgICBtZW1vW25dID0gbnRoRmlib25hY2NpVXRpbChuIC0gMSwgbWVtbykgCiAgICAgICAgICAgICAgICAgICAgICAgKyBudGhGaWJvbmFjY2lVdGlsKG4gLSAyLCBtZW1vKTsKICAgIHJldHVybiBtZW1vW25dOwp9CgppbnQgbnRoRmlib25hY2NpKGludCBuKSB7CiAgICB2ZWN0b3I8aW50PiBtZW1vKG4gKyAxLCAtMSk7CiAgICByZXR1cm4gbnRoRmlib25hY2NpVXRpbChuLCBtZW1vKTsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbiA9IDU7CiAgICBpbnQgcmVzdWx0ID0gbnRoRmlib25hY2NpKG4pOwogICAgY291dCA8PCByZXN1bHQgPDwgZW5kbDsKICAgIHJldHVybiAwOwp9