C++ 无法找出下面程序中的错误

C++ 无法找出下面程序中的错误,c++,binary-search,C++,Binary Search,我陷入了一个问题 对于给定的测试用例,我使用二进制搜索解决了这个问题 输入: 六, -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

我陷入了一个问题 对于给定的测试用例,我使用二进制搜索解决了这个问题 输入:

六,

-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;;


}
#包括
使用名称空间std;
INTA[4100],b[4100],c[4100],d[4100];
向量s1,s2;
int main(){
int n;
cin>>n;
对于(int i=0;i>a[i]>>b[i]>>c[i]>>d[i];
}

对于(int i=0;i很抱歉,但是您的算法没有计算出所需的值。例如,给定输入
1
,它会生成
1
的答案,这是不正确的,因为
1+1+1
不等于
0