It is a straight forward dp problem.Use a memoized version. it is pretty
simple.


#include<iostream>
#include<map>
using namespace std;
map <long long int,long long int> p;
main()
{
  long long  int a,f;
  long long int fun(long long int );
  p.clear();
  while(cin>>a)
    {
      f=fun(a);
      cout<<f<<endl;
    }
}
long long int fun(long long int a)
{
  long long int ch,q;
  if(a==0)
    return 0;
  if(p.find(a)!=p.end())
    return p[a];
  else
    {
      ch=fun(a/2)+fun(a/3)+fun(a/4);
      if(ch>=a)
    p[a]=ch;
      else
    p[a]=a;
    }
  return p[a];
}



-- 
S.Nishaanth,
Computer Science and engineering,
IIT Madras.

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algoge...@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to