#include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 15; int n, l, r, x; int w[N]; int main() { cin >> n >> l >> r >> x; for (int i = 0; i < n; i ++ ) cin >> w[i]; int res = 0; for (int i = 0; i < 1 << n; i ++ )//i<2^n; { int cnt = 0, sum = 0, minw = 1e7, maxw = 0; for (int j = 0; j < n; j ++ ) if (i >> j & 1)//等价于i除以2的j次方,然后与1做与运算,也就是如果i/(2^j)得到的数装 //换为2进制后,如果最后一位为1,就输出1,最后一位为0就输出0。 { cnt ++ ; sum += w[j]; minw = min(minw, w[j]); maxw = max(maxw, w[j]); } if (cnt >= 2 && sum >= l && sum <= r && maxw - minw >= x) res ++ ; } cout << res << endl; return 0; } 作者:yxc 链接:https://www.acwing.com/activity/content/code/content/6326578/ 来源:AcWing 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
AcWing 4954. 挑选
最新推荐文章于 2024-09-19 13:36:34 发布