Here is the full solution
void calc(int budget,int n,int fee[],int fun[])
{
int i, j;
int K[n+1][budget+1];
for (i = 0; i <= n; i++)
{
for (j = 0; j <= budget; j++)
{
if (i==0 || j==0)
K[i][j] = 0;
else if (fee[i-1] <= j)
K[ i ][ j ] = max(fun[i-1] + K[i-1][j-fee[i-1]], K[i-1][j]);
else
K[ i ][ j ] = K[i-1][ j ];
}
}
int p=K[n][budget];
int sum=0,val=0;
i=n;
for(j=budget;j>0;)
{
if(K[i][j]==K[i-1][j])
i--;
else
{
sum+=fun[i-1];
j-=fee[i-1];
val+=fee[i-1];
i--;
}
if(sum==p || i==0)
break;
}