首页 > 代码库 > PAT1048

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 OJ11 #define fin cin12 #else13 ifstream fin("in.data");14 #endif15 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         else32             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 }

 

PAT1048