#include<bits/stdc++.h>
using namespace std;
int main()
{
int flag=0;
int T,i;
cin>>T;
while(T--)
{
unordered_map<int,int>h;
long int n;
cin>>n;
long int arr[n];
for(i=0;i<n;i++)
{
cin>>arr[i];
}
sort(arr, arr+n);
for(i=0;i<n;i++)
{
if(arr[i]>0)
h[arr[i]]=0;
}
for(i=0;i<n;i++)
{
if(arr[i]<0 && h.find((-1)*(arr[i]))!=h.end())
{
h[(-1)*(arr[i])]=arr[i];
flag=1;
}
}
for(auto x=h.begin(); x!=h.end(); x++)
{
if(x->second!=0)
{
cout<<x->first<<" "<<x->second<<" ";
}
}
if(flag==0)
{
cout<<0;
}
cout<<endl;
}
}
Данный массив arr [] из N пар положительных и отрицательных целых чисел может быть не в отсортированном порядке. Задача состоит в том, чтобы соединить положительные и отрицательные элементы таким образом, чтобы положительный элемент сочетался с отрицательным элементом того же абсолютного значения. Если элемент пары отсутствует для элемента, игнорируйте его. Вывод должен содержать все пары в порядке возрастания абсолютных значений. Чтобы напечатать пару, положительное значение должно быть напечатано перед соответствующим отрицательным значением. Примечание: элементы в массиве различны. входной массив = 1, 3, 6, -2, -1, -3, 2,7 выход: 1 -1 2 -2 3-3
мой код не работает в тестовом примере input array = - 1-2-5-6 1 3 4 2 5 6 ожидаемый результат = 1-1 2 -2 5-5 6-6 мой результат = 6-6 5-5 1-2-2 где я делаю не так