Advertisement
Guest User

Untitled

a guest
Aug 8th, 2018
334
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. //#pragma GCC optimize ("O3")
  3. //#pragma GCC target ("sse4")
  4. //#pragma GCC target ("avx,tune=native")
  5. //Use above if bruteforcing with lots of small operations. Or just use it anytime, there's no downside. AVX is better slightly
  6.  
  7.  
  8.  
  9.  
  10. /*
  11. lmfao im dumb as hell building a trie when it was just precomp
  12. */
  13.  
  14. using namespace std;
  15. typedef long long ll;
  16. typedef pair<int, int> pair2;
  17. typedef pair<int, pair<int, int> > pair3;
  18. typedef pair<int, pair<int, pair<int, int> > > pair4;
  19. #define MAXN 200013
  20. #define INF 1000000000000000000LL
  21. #define MOD 1000000007LL
  22. #define IINF 1000000000
  23. #define mp make_pair
  24. #define pb push_back
  25. #define remove pop
  26. #define all(x) x.begin(), x.end()
  27. #define count gotem
  28.  
  29. int n, m, q;
  30. int count[1 << 12];
  31. int store[1 << 12][101];
  32. int wu[12];
  33.  
  34. int stringToBinary(string s) {
  35. int answer = 0;
  36.  
  37. for (int i = 0; i < n; i++) {
  38. if (s[i] == '1') answer += 1 << i;
  39. }
  40. /*
  41. for (int i = n - 1; i >= 0; i--) {
  42. if (s[i] == '1') answer += 1 << i;
  43. }*/
  44. return answer;
  45. }
  46. int main() {
  47. if (fopen("FILENAME.in", "r")) {
  48. freopen("FILENAME.in", "r", stdin);
  49. freopen("FILENAME.out", "w", stdout);
  50. }
  51. ios_base::sync_with_stdio(false);
  52. cin.tie(NULL);
  53.  
  54. cin >> n >> m >> q;
  55.  
  56. for (int i = 0; i < n; i++) {
  57. cin >> wu[i];
  58. }
  59.  
  60. for (int i = 0; i < m; i++) {
  61. string s;
  62. cin >> s;
  63.  
  64. count[stringToBinary(s)]++;
  65. }
  66.  
  67. for (int i = 0; i < (1 << n); i++) {
  68. for (int j = 0; j < (1 << n); j++) {
  69. int wuValue = 0;
  70. for (int k = 0; k < n; k++) {
  71. if ((i & (1 << k)) == (j & (1 << k))) {
  72. wuValue += wu[k];
  73. }
  74. }
  75. store[i][wuValue] += count[j];
  76. }
  77. }
  78.  
  79. for (int i = 0; i < q; i++) {
  80. string s;
  81. int k;
  82. cin >> s >> k;
  83.  
  84. int ans = 0;
  85. int intV = stringToBinary(s);
  86. for (int j = 0; j <= k; j++) {
  87. ans += store[intV][j];
  88. }
  89. cout << ans << '\n';
  90. //cout << store[stringToBinary(s)][k] << '\n';
  91. }
  92. }
  93.  
  94. //CAST .SIZE() TO INT!
  95. //don't do dumb stuff with merge-sort tree like using update when everything is static...S
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement