https://www.patest.cn/contests/pat-a-practise/1048
参考了http://blog.csdn.net/jtjy568805874/article/details/50858073
水题,想了dp,二分。 后来看了题解才发现好简单。
#include <cstdio>
#define inone(i) scanf("%d",&i)
#define intwo(i,j) scanf("%d%d",&i,&j)
#define rep(i,j,k) for(int i=j;i<=k;i++)
#define per(i,j,k) for(int i=k;i>=j;i--)
const int maxn = 1e3 + 10;
int n, m, c[maxn], x;
int main()
{
intwo(n,m);
rep(i, 1, n) { inone(x); c[x]++; }
for (int i = 1; i + i <= m; i++)
{
if (i + i == m) {
if (c[i] >= 2) { printf("%d %d\n", i, m - i); return 0; }
}
else if (c[i] && c[m - i]) {
printf("%d %d\n", i, m - i);
return 0;
}
}
printf("No Solution\n");
return 0;
}