题目
pata1048
题目思路
常规散列题目,利用数组id记录数字输入情况,同时记录输入数组a,之后对a排序,从小到大进行扫描。需要注意的是对于m=2a[i]的情况要单独判断。
参考代码
#include<iostream>
#include<algorithm>
using namespace std;
int h[100010]={0};
int main()
{
int m,n,i,t=0;
cin>>n>>m;
int a[n];
for(i=0;i<n;i++)
{
scanf("%d",a+i);
h[a[i]]++;
}
sort(a,a+n);
for(i=0;i<n;i++)
{
if((h[m-a[i]]>=1&&m-a[i]!=a[i])||(h[m-a[i]]>=2&&m-a[i]==a[i]))
{
t=1;
break;
}
if(a[i]>=m/2)
break;
}
if(t==0)
printf("No Solution");
else
printf("%d %d",a[i],m-a[i]);
return 0;
}