Advertisement
Guest User

Untitled

a guest
May 28th, 2015
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define FRE(i,a,b) for(i = a; i <= b; i++)
  6. #define FRL(i,a,b) for(i = a; i < b; i++)
  7. #define mem(t, v) memset ((t) , v, sizeof(t))
  8. #define sqr(x) (x)*(x)
  9. #define all(x) x.begin(),x.end()
  10. #define un(x) x.erase(unique(all(x)), x.end())
  11. #define sf(n) scanf("%d", &n)
  12. #define sff(a,b) scanf("%d %d", &a, &b)
  13. #define sfff(a,b,c) scanf("%d %d %d", &a, &b, &c)
  14. #define D(x) cout << #x " = " << (x) << endl
  15. #define pf printf
  16. #define VI vector <int>
  17. #define pii pair <int, int>
  18. #define pll pair <LL, LL>
  19. #define pb push_back
  20. #define mp make_pair
  21. #define pi acos(-1.00)
  22. #define DBG pf("Hi\n")
  23. #define sz size()
  24. #define ins insert
  25. #define fi first
  26. #define se second
  27. #define xx first
  28. #define yy second
  29. #define inf (1<<29)
  30. #define MOD 100007
  31. #define eps 1e-9
  32. #define MAX 1440
  33.  
  34. typedef long long int LL;
  35. typedef double db;
  36.  
  37. bool check(int n, int pos) {return (bool) (n & (1<<pos));}
  38. int on(int n, int pos) {return n | (1<<pos); }
  39. int off(int n, int pos) {return n & ~(1<<pos); }
  40. int A[60], R, n, m, Different;
  41. LL dp[60][60];
  42. VI v;
  43. LL call(int group, int taken)
  44. {
  45. if(taken > R)
  46. return 0;
  47. if(group >= Different)
  48. {
  49. if(taken < R)
  50. return 0;
  51. return 1;
  52. }
  53. int i;
  54. LL ret = 0;
  55. if(dp[group][taken] != -1)
  56. return dp[group][taken];
  57. for(i = 0; i<=v[group]; i++)
  58. {
  59. ret += call(group+1,taken+i);
  60. }
  61.  
  62. dp[group][taken] = ret;
  63. return ret;
  64. }
  65. int main()
  66. {
  67. int i,j,k,cs = 0,t;
  68. while(1)
  69. {
  70. cs++;
  71. v.clear();
  72. sff(n,m);
  73. if(n+m == 0)
  74. break;
  75. FRE(i,1,n)
  76. sf(A[i]);
  77. sort(A+1,A+n+1);
  78. i = 1;
  79. while(i <= n)
  80. {
  81. int cnt = 0;
  82. for( j = i; j<= n; j++)
  83. {
  84. if(A[j] != A[i])
  85. break;
  86. cnt++;
  87. }
  88. v.pb(cnt);
  89. i = j;
  90. }
  91. FRL(i,0,v.sz)
  92. Different = v.sz;
  93. pf("Case %d:\n",cs);
  94. FRE(i,1,m)
  95. {
  96. mem(dp,-1);
  97. sf(R);
  98. pf("%lld\n",call(0,0));
  99. }
  100. }
  101. return 0;
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement