Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define FRE(i,a,b) for(i = a; i <= b; i++)
- #define FRL(i,a,b) for(i = a; i < b; i++)
- #define mem(t, v) memset ((t) , v, sizeof(t))
- #define sqr(x) (x)*(x)
- #define all(x) x.begin(),x.end()
- #define un(x) x.erase(unique(all(x)), x.end())
- #define sf(n) scanf("%d", &n)
- #define sff(a,b) scanf("%d %d", &a, &b)
- #define sfff(a,b,c) scanf("%d %d %d", &a, &b, &c)
- #define D(x) cout << #x " = " << (x) << endl
- #define pf printf
- #define VI vector <int>
- #define pii pair <int, int>
- #define pll pair <LL, LL>
- #define pb push_back
- #define mp make_pair
- #define pi acos(-1.00)
- #define DBG pf("Hi\n")
- #define sz size()
- #define ins insert
- #define fi first
- #define se second
- #define xx first
- #define yy second
- #define inf (1<<29)
- #define MOD 100007
- #define eps 1e-9
- #define MAX 1440
- typedef long long int LL;
- typedef double db;
- bool check(int n, int pos) {return (bool) (n & (1<<pos));}
- int on(int n, int pos) {return n | (1<<pos); }
- int off(int n, int pos) {return n & ~(1<<pos); }
- int A[60], R, n, m, Different;
- LL dp[60][60];
- VI v;
- LL call(int group, int taken)
- {
- if(taken > R)
- return 0;
- if(group >= Different)
- {
- if(taken < R)
- return 0;
- return 1;
- }
- int i;
- LL ret = 0;
- if(dp[group][taken] != -1)
- return dp[group][taken];
- for(i = 0; i<=v[group]; i++)
- {
- ret += call(group+1,taken+i);
- }
- dp[group][taken] = ret;
- return ret;
- }
- int main()
- {
- int i,j,k,cs = 0,t;
- while(1)
- {
- cs++;
- v.clear();
- sff(n,m);
- if(n+m == 0)
- break;
- FRE(i,1,n)
- sf(A[i]);
- sort(A+1,A+n+1);
- i = 1;
- while(i <= n)
- {
- int cnt = 0;
- for( j = i; j<= n; j++)
- {
- if(A[j] != A[i])
- break;
- cnt++;
- }
- v.pb(cnt);
- i = j;
- }
- FRL(i,0,v.sz)
- Different = v.sz;
- pf("Case %d:\n",cs);
- FRE(i,1,m)
- {
- mem(dp,-1);
- sf(R);
- pf("%lld\n",call(0,0));
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement