My solution cannot pass the fourth test case passing all other test cases , please correct my code if possible! or just explain what's wrong

#include
#include
#include
using namespace std;
vector<vector> ans;
void allsubsets(int arr[], int n, vector v, int sum,int i,int temp)
{
if(temp == sum){

    ans.push_back(v);
	return;
}
if(i>=n){
	return;
}
if(temp > sum){
	return;
}

v.push_back(i);
allsubsets(arr,n,v,sum,i+1,temp + arr[i]);
v.pop_back();
allsubsets(arr,n,v,sum,i+1,temp);

}
void printsub(int arr[], int n, int sum)
{
vector v;

allsubsets(arr, n, v, sum,0,0);

}

void printit(vector<vector> ans,vector<vector> ans2,int i,int *arr){

if(i==ans.size()){
	return;
}
for ( int k = 0; k < ans[i].size(); k++)
cout << arr[ans[i][k]] << " ";
cout << "and ";
for ( int k = 0; k < ans2[i].size(); k++)
cout << arr[ans2[i][k]] << " ";
cout << endl;
printit(ans,ans2,i+1,arr);

}

int main()
{
int n, k=0;
cin >> n;
int arr[n];
for (int i = 0; i < n; i++)
{
cin >> arr[i];
k += arr[i];
}
printsub(arr, n, (k/2));

vector<vector<int>> ans2(ans.size());

reverse_copy(ans.begin(), ans.end(), ans2.begin());
printit(ans,ans2,0,arr);
if(ans.size()>0)
	cout << ans.size() << endl;
else cout << "0" << endl;


return 0;

}

hi @garvit510bhatia,
refer this https://www.geeksforgeeks.org/split-array-two-equal-sum-subarrays/
Hope it will clear ur doubt…