Basketball Gym

来源:互联网 发布:淘宝新店怎么上架宝贝 编辑:程序博客网 时间:2024/06/06 01:53
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <set>#include <map>#include <stack>#include <queue>#include <ctype.h>#include <vector>#include <algorithm>#include <time.h>// cout << "  ===  " << endl;using namespace std;typedef long long ll;const int maxn = 200000 + 7, INF = 0x3f3f3f3f, mod = 1e9+7;int n, m;int a[maxn], b[maxn];map<int, int> mp1;map<int, int> mp2;set<int> st;void init() {    st.clear();    for(int i = 0; i < n; ++i)        scanf("%d", &a[i]);    for(int i = 0; i < m; ++i)        scanf("%d", &b[i]);    for(int i = 1; i < (1<<n); ++i) {        int sum = 0;        for(int j = 0; j < n; ++j) {            if(i & (1<<j)) sum += a[j];        }        mp1[sum]++;        st.insert(sum);    }    for(int i = 1; i < (1<<m); ++i) {        int sum = 0;        for(int j = 0; j < m; ++j) {            if(i & (1<<j)) sum += b[j];        }        mp2[sum]++;        st.insert(sum);    }}int main() {    scanf("%d %d", &n, &m);    init();    set<int>::iterator it;    int ans = 0;    for(it = st.begin(); it != st.end(); ++it)        ans += (mp1[*it]*mp2[*it]);    cout << ans << endl;    return 0;}

原创粉丝点击