#2269. 四数之和

四数之和

当前没有测试数据。

using namespace std;
int n,x,a[1005];
int main()
{
    cin>>n>>x;
    // 哈希表: 两数和 -> (idx1,idx2)
    unordered_map<int,pair<int,int>> mp;
    for(int i=1;i<=n;i++)
	{
        cin>>a[i];
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=i+1;j<=n;j++)
        {
            mp[a[i]+a[j]]={i,j};
        }
    }
    for(int j=1;j<=n;j++)
	{
        for(int i=1;i<j;i++)
		{
            int t=a[i]+a[j];
            int tar=x-t;
            if(mp.count(tar))
			{
                auto [idx1,idx2]=mp[tar];
                if(idx1!=idx2&&idx1!=j&&idx1!=i&&idx2!=i&&idx2!=j&&i!=j)
                {
                    cout<<i<<' '<<j<<' '<<idx1<<' '<<idx2;
					return 0;
                }
            }
    	}
    }
    cout<<-1;
    return 0;
}