码迷,mamicode.com
首页 > 其他好文 > 详细

Can you find it

时间:2015-05-09 14:49:37      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

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 }

 

Can you find it

标签:

原文地址:http://www.cnblogs.com/ht-beyond/p/4489819.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!