#include <iostream>
#include <map>
#include <iterator>
using namespace std;
map<long long int,long long int> memo;
long long int f(long long int n)
{ long long int a;
if(n==1)
return 1;
else if(n==0)
return 0;
if(memo.find(n)==memo.end())
{
a=f(n/2)+f(n/3)+f(n/4);
memo.insert(pair<long long int, long long int>(n,a));
}
else
a=memo.find(n)->second;
if(n>=a)
return n;
else
return a;
}
int main() {
long long int test;
while(!cin.eof())
{
cin>>test;
cout<<f(test)<<endl;
}
return 0;
}
Could anyone point out, why am I getting wrong answer?