Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.31 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #include <ext/pb_ds/assoc_container.hpp>
  3. #include <ext/pb_ds/tree_policy.hpp>
  4. #include <ext/rope>
  5.  
  6. #define ll long long
  7. #define ll128 __uint128_t
  8. #define ld long double
  9. #define vll vector <ll>
  10. #define vvll vector <vll>
  11. #define pll pair <ll, ll>
  12.  
  13. #define rep(i, a, b) for(ll i = a; i < b; i++)
  14. #define per(i, a, b) for(ll i = a - 1; i >= b; --i)
  15.  
  16. #define endl "\n"
  17. #define pb push_back
  18. #define pf push_front
  19.  
  20. #define all(v) (v).begin(), (v).end()
  21. #define rall(v) (v).rbegin(), (v).rend()
  22.  
  23. #define sorta(v) sort(all(v))
  24. #define sortd(v) sort(rall(v))
  25. #define vld vector<ld>
  26.  
  27. #define debug if (1)
  28. #define log(val) debug {cout << "\n" << #val << ": " << val << "\n";}
  29.  
  30. #define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  31.  
  32. #define mod (ll)(1e9 + 7)
  33.  
  34. using namespace std;
  35. using namespace __gnu_cxx;
  36. using namespace __gnu_pbds;
  37.  
  38. ostream & operator << (ostream & out, vll & a) {
  39. for(auto i : a) out << i << " ";
  40. return out;
  41. }
  42.  
  43. istream & operator >> (istream & in, vll & a) {
  44. for(auto &i : a) in >> i;
  45. return in;
  46. }
  47.  
  48. ll usedj[200];
  49. ll usedk[200];
  50.  
  51. int main() {
  52. //ios;
  53.  
  54. ll n, m, h;
  55. cin >> n >> m >> h;
  56.  
  57. vvll a(n, vll(m));
  58. vvll b(n, vll(h));
  59.  
  60. vector<vvll> ansMin(n, vvll(m, vll(h, 0)));
  61. vector<vvll> ansMax(n, vvll(m, vll(h, 0)));
  62.  
  63. rep(i, 0, n) {
  64. rep(j, 0, m) {
  65. char q;
  66. cin >> q;
  67. if(q == '1') a[i][j] = 1;
  68. else a[i][j] = 0;
  69. }
  70. }
  71.  
  72. rep(i, 0, n) {
  73. rep(j, 0, h) {
  74. char q;
  75. cin >> q;
  76. if(q == '1') b[i][j] = 1;
  77. else b[i][j] = 0;
  78. }
  79. }
  80.  
  81. ll cntMin = 0;
  82. ll cntMax = 0;
  83.  
  84. rep(i, 0, n) {
  85. rep(j, 0, m) {
  86. rep(k, 0, h) {
  87. ansMax[i][j][k] = a[i][j] & b[i][k];
  88. }
  89. }
  90. }
  91.  
  92. rep(i, 0, n) {
  93. fill(usedj, usedj + 200, 0);
  94. fill(usedk, usedk + 200, 0);
  95. rep(j, 0, m) {
  96. rep(k, 0, h) {
  97. if(a[i][j] && a[i][k]) {
  98. if(usedj[j] && usedk[k]) {
  99. continue;
  100. } else {
  101. ansMin[i][j][k] = a[i][j] & a[i][k];
  102. usedj[j] = 1;
  103. usedk[k] = 1;
  104. }
  105. }
  106. }
  107. }
  108. }
  109.  
  110. rep(i, 0, n) {
  111. fill(usedj, usedj + 200, 0);
  112. fill(usedk, usedk + 200, 0);
  113. rep(j, 0, m) {
  114. rep(k, 0, h) {
  115. usedj[j] |= ansMax[i][j][k];
  116. usedk[k] |= ansMax[i][j][k];
  117. }
  118. }
  119. }
  120.  
  121. vector<tuple<ll, ll, ll> > tuplesMax, tuplesMin;
  122.  
  123. rep(i, 0, n) rep(j, 0, m) rep(k, 0, h) {
  124. cntMin += ansMin[i][j][k];
  125. cntMax += ansMax[i][j][k];
  126. if(ansMax[i][j][k]) {
  127. tuplesMax.pb(make_tuple(i, j, k));
  128. }
  129. if(ansMin[i][j][k]) {
  130. tuplesMin.pb(make_tuple(i, j, k));
  131. }
  132. }
  133.  
  134. cout << cntMax << endl;
  135. for(auto i : tuplesMax) {
  136. cout << get<0>(i) << " " << get<1>(i) << " " << get<2>(i) << endl;
  137. }
  138. cout << cntMin << endl;
  139. for(auto i : tuplesMin) {
  140. cout << get<0>(i) << " " << get<1>(i) << " " << get<2>(i) << endl;
  141. }
  142.  
  143. return 0;
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement