Минимальная разница между двумя несортированными массивами
Мне нужно найти минимальную абсолютную разницу между двумя элементами несортированных массивов. Мой подход заключается в том, чтобы сначала отсортировать оба массива, запустить цикл над одним массивом и найти нижнюю границу каждого элемента этого массива в другом массиве.
А затем проверьте, является ли он минимальным или нет, и сохраните его для дальнейших сравнений
тестовый пример:
2
8 1 3 5 7 9 7 3 1
8 2 4 6 8 10 8 6 2
8 2 3 5 10 9 3 2 1
7 1 2 6 12 13 3 2
Выход :
1
0
результат : пройдено
Объяснение:
1) min будет abs(a[7]-b[7])
2) min будет abs(a[0]-b[(1)])
Но когда я подчиняюсь spoj, я получаю неправильный ответ .
Пожалуйста, помогите!
Проблемная Ссылка : SPOJ.com - проблема ACPC11B[^]
Что я уже пробовал:
#include<iostream> #include<algorithm> #include<vector> using namespace std; vector <int> a; vector <int> b; int main(){ int t; cin>>t; while(t--){ int na; cin>>na; for(int i=0;i<na;i++){ int temp; cin>>temp; a.push_back(temp); } int nb; cin>>nb; for(int i=0;i<nb;i++){ int temp; cin>>temp; b.push_back(temp); } sort(a.begin(),a.end()); sort(b.begin(),b.end()); int ans=abs(a[0]-b[0]); for(int i=0;i<a.size();i++){ int bval = lower_bound(b.begin(),b.end(),a[i])-b.begin(); ans = min(ans,abs(a[i]-b[bval])); if(bval>0) ans = min(ans,abs(a[i]-b[bval-1])); } cout<<ans<<endl; a.clear(); b.clear(); } }