#c #binary-search
#c #двоичный файл-поиск
Вопрос:
Я застрял в проблеме, с суммой четырех я решил эту проблему, используя двоичный поиск, для ввода данного тестового примера:
6
-45 22 42 -16
-41 -27 56 30
-36 53 -37 77
-36 30 -75 -46
26 -38 -10 62
-32 -54 -6 45
Фактический результат: 3
Ожидаемый результат: 5
#include<bits/stdc .h>
using namespace std;
int a[4100],b[4100],c[4100],d[4100];
vector <int> s1,s2;
int main(){
int n;
cin>>n;
for(int i=0;i<n;i ){
cin>>a[i]>>b[i]>>c[i]>>d[i];
}
for(int i=0;i<n;i ){
for(int j=0;j<n;j ){
s1.push_back(a[i] b[j]);
}
}
for(int i=0;i<n;i ){
for(int j=0;j<n;j ){
s2.push_back((c[i] d[j]));
}
}
sort(s1.begin(),s1.end());
sort(s2.begin(),s2.end());
int ans = 0;
for(int v: s1){
vector <int> ::iterator x = lower_bound(s2.begin(),s2.end(),v);
vector <int> ::iterator y = upper_bound(s2.begin(),s2.end(),v);
ans =y-x;
}
cout<<ans<<endl;;
}
Ответ №1:
Извините, но ваш алгоритм не вычисляет ничего подобного тому, что требуется. Например, при вводе 1 1 1 1 1
он выдает ответ 1
, который неверен, поскольку 1 1 1 1
не равен 0
.