A1048

给n个正整数,再给一个m,如果n个数中存在a+b=m(a<=b),则输出a,b。

如果有两组以上,则输出a最小的一组。

 1 #include<cstdio>
 2 #include<algorithm>
 3 using namespace std;
 4 const int N=1005;
 5 int hashTable[N];
 6 int main(){
 7     int n,m,a;
 8     scanf("%d %d",&n,&m);
 9     for(int i=0;i<n;i++){
10         scanf("%d",&a);
11         ++hashTable[a];
12     }
13     for(int i=0;i<N;i++){
14         if(hashTable[i]&&hashTable[m-i]){
15             if(i==m-i&&hashTable[i]<=1){
16                 continue;
17             }
18             printf("%d %d\n",i, m-i);
19             return 0;
20         }
21     }
22     printf("No Solution\n");
23     return 0;
24 }

 

posted @ 2019-02-16 16:43  老葛  阅读(211)  评论(0编辑  收藏  举报