#include<cstdio>
#include<cstring>
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int a,hash[1005]={0};
for(int i=0;i<n;i++)
{
scanf("%d",&a);
hash[a]++;
}
for(int i=0;i<=500;i++)
{
if(m<i) break;
if(hash[i]&&hash[m-i])
{
if(i==m-i&&hash[i]<=1)
continue;
printf("%d %d\n",i,m-i);
return 0;}
}
printf("No Solution");
return 0;
#include<cstring>
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int a,hash[1005]={0};
for(int i=0;i<n;i++)
{
scanf("%d",&a);
hash[a]++;
}
for(int i=0;i<=500;i++)
{
if(m<i) break;
if(hash[i]&&hash[m-i])
{
if(i==m-i&&hash[i]<=1)
continue;
printf("%d %d\n",i,m-i);
return 0;}
}
printf("No Solution");
return 0;
}
忘记考虑俩点了。1 比较第二个hash时候,不能定义成n,不然不够,m不能比i小,否则会发生溢出错误