why this code not passing all test cases?
#include
#include <bits/stdc++.h>
using namespace std;
#define ll long long int
ll arr[1005];
int n;
bool dp[1005][1005];
ll target;
void print_target_Sum(int left, int right)
{
if(left >= right)
{
return;
}
if(dp[left][right])
{
return;
}
if(arr[left] + arr[right] == target)
{
dp[left][right] = dp[right][left] = true;
cout<<min(arr[left] , arr[right])<<" and "<<max(arr[left] , arr[right])<<endl;
}
print_target_Sum(left , right-1);
print_target_Sum(left+1 , right);
print_target_Sum(left+1 , right-1);
}
int main()
{
cin>>n;
for(int i = 0 ; i < n ; i++)
{
cin>>arr[i];
}
cin>>target;
sort(arr , arr+n);
memset(dp , 0 , sizeof dp);
print_target_Sum(0 , n-1);
return 0;
}