PAT1048

注意一个坑,就是当M是偶数的时候可能有两个M >> 1的值,这种时候就只能数数了..

 

 1 #include <iostream>
 2 #include <vector>
 3 #include <string>
 4 #include <fstream>
 5 
 6 using namespace std;
 7 
 8 #define OJ
 9 
10 #ifdef OJ
11 #define fin cin
12 #else
13 ifstream fin("in.data");
14 #endif
15 
16 int main(){
17     int N, M, n;
18     fin >> N >> M;
19 
20     vector<int> money(1001, 0);
21     for (int i = 0; i < N; i++){
22         fin >> n;
23         if (n >= M) continue;
24         money[n]++;
25     }
26 
27     int half_M = (M >> 1) + 1;
28     for (int i = 1; i < half_M; i++){
29         if (money[i] > 0)
30             money[i]--;
31         else
32             continue;
33         if (money[M - i] > 0){
34             cout << i << " " << M - i << endl;
35             return 0;
36         }
37     }
38 
39     cout << "No Solution" << endl;
40 
41     return 0;
42 }

 

转载于:https://www.cnblogs.com/EpisodeXI/p/4102683.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值