并没用hash的思想,而是将元素排序,从头部取一个,从尾部取一个,判断加起来的大小
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=100010;
bool cmp(int a,int b)
{
return a<b;
}
int main()
{
int n,m;
int value[maxn];
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%d",&value[i]);
}
sort(value,value+n,cmp);
int i=0,j=n-1;
for(;i<j;)
{
if(value[i]+value[j]>m) j--;
else if(value[i]+value[j]<m) i++;
else
{
printf("%d %d\n",value[i],value[j]);
break;
}
}
if(i>=j) printf("No Solution\n");
return 0;
}