I have this code its working for most cases , kindly help in finding the bug
void solve() {
int N ; // size of array
cin >> N ;
vector arr(N);
for (int i = 0 ; i < N ; i++) {
cin >> arr[i];
}
int target = 0 ;
cin >> target ;
sort(arr.begin(), arr.end());
int left = 0 ;
int right = N - 1 ;
while (left < right) {
int leftEle = arr[left];
int rightEle = arr[right];
if ( leftEle + rightEle == target) {
int leftCount = 0 ;
int rightCount = 0 ;
while (left < right and arr[left] == leftEle) {
left++;
leftCount++;
}
while (left <= right and arr[right] == rightEle) {
right--;
rightCount ++;
}
for (int i = 0 ; i < leftCount * rightCount ; i++) {
cout << leftEle << " and " << rightEle << endl;
}
}
else if (leftEle + rightEle > target) {
right--;
}
else
{
left--;
}
}
}