не удалось выяснить ошибку в приведенной ниже программе

#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 .