终于拿下了一题,其实很简单,输入时就将b[a[i]]标记为1, 若发现有b[m-a[i]]为1,取其最小值。
AC代码:
//1048 19:48-20:02
#include<stdio.h>
const int NUM=100005;
int a[NUM];
int b[NUM];
int main()
{
int n,i,m;
int temp,min=NUM;
//freopen("C:\\Documents and Settings\\Administrator\\桌面\\input.txt","r",stdin);
scanf("%d%d",&n,&m);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
if(a[i]<=m){
temp=(a[i]<m-a[i])?a[i]:(m-a[i]);
if(b[m-a[i]]==1&&min>temp){
min=temp;
}
b[a[i]]=1;
}
}
if(min!=NUM)
printf("%d %d",min,m-min);
else
printf("No Solution");
return 0;
}