这题之前用hash解决过一次
又在二分法中遇到了
给出二分法的代码如下
记得要让i != j-1
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=100010;
int main()
{
int a[maxn];
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort (a,a+n);
for (int i=0;i<n;i++)
{
int temp=m-a[i];
int j=upper_bound(a+i+1,a+n,temp)-a;
if (a[j-1]==temp&&i!=j-1)
{
printf("%d %d",a[i],a[j-1]);
return 0;
}
}
printf("No Solution");
}