无法找出以下程序中的错误

时间:2019-03-16 07:14:25

标签: c++ binary-search

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

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 个答案:

答案 0 :(得分:0)

对不起,但是您的算法无法计算出所需的值。例如,给定输入1 1 1 1 1,它会产生1的答案,这是不正确的,因为1 + 1 + 1 + 1不等于0

相关问题