标签:
Can you find it:
http://acm.hdu.edu.cn/showproblem.php?pid=2141
1 /* 2 2015.5 3 Can you find it 4 5 */ 6 #include <iostream> 7 #include <algorithm> 8 using namespace std; 9 10 int a[505], b[505], c[505]; 11 int sum[505 * 505]; 12 int l, n, m, k; 13 int flag; 14 15 // 二分查找 16 void binary(int x) 17 { 18 int left, right, mid; 19 left = 0; 20 right = k - 1; 21 while (left <= right) 22 { 23 mid = (left + right) / 2; 24 if (sum[mid] > x) 25 right = mid - 1; 26 else if (sum[mid]<x) 27 left = mid + 1; 28 else 29 { 30 flag = 1; 31 return; 32 } 33 } 34 return; 35 } 36 37 int main() 38 { 39 int i, j, q, x, count = 1; 40 while (cin >> l >> n >> m) 41 { 42 for (i = 0; i<l; i++) 43 cin >> a[i]; 44 for (i = 0; i<n; i++) 45 cin >> b[i]; 46 for (i = 0; i<m; i++) 47 cin >> c[i]; 48 49 k = 0; 50 for (i = 0; i<l; i++) 51 for (j = 0; j<n; j++) 52 { 53 sum[k++] = a[i] + b[j]; 54 } 55 sort(sum, sum + k); 56 57 cin >> q; 58 cout << "Case " << count++ << ":" << endl; 59 60 while (q--) 61 { 62 cin >> x; 63 flag = 0; 64 for (i = 0; i<m; i++) 65 { 66 binary(x - c[i]); 67 if (flag) 68 { 69 cout << "YES" << endl; 70 break; 71 } 72 } 73 if (!flag) 74 cout << "NO" << endl; 75 } 76 } 77 78 return 0; 79 }
标签:
原文地址:http://www.cnblogs.com/ht-beyond/p/4489819.html