Advertisement
Ne-Biolog

Untitled

Mar 3rd, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.42 KB | None | 0 0
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <memory.h>
  4. #include <iterator>
  5. #include <cassert>
  6. #include <fstream>
  7. #include <iomanip>
  8. #include <cstdlib>
  9. #include <bitset>
  10. #include <vector>
  11. #include <cstdio>
  12. #include <string>
  13. #include <queue>
  14. #include <deque>
  15. #include <cmath>
  16. #include <ctime>
  17. #include <stack>
  18. #include <set>
  19. #include <map>
  20.  
  21. using namespace std;
  22.  
  23. //#define int long long
  24.  
  25. #define fi first
  26. #define se second
  27. #define pb push_back
  28. #define mp make_pair
  29. #define all(x) x.begin() , x.end()
  30.  
  31. typedef long long ll;
  32. typedef long double ld;
  33. typedef pair < ll , ll > pll;
  34. typedef pair < int , int > pii;
  35.  
  36. template < typename T >
  37. T read(){
  38. T p = 1 , x = 0;
  39. char s = getchar();
  40. while(s == ' ' || s == '\n') s = getchar();
  41. if(s == '-') p = -1 , s = getchar();
  42. while(s >= '0' && s <= '9'){
  43. x = x * 10 + s - '0';
  44. s = getchar();
  45. }
  46. return x * p;
  47. }
  48.  
  49. template < typename A , typename B >
  50. void Umax(A &a , const B &b){
  51. if(a < b)
  52. a = b;
  53. }
  54.  
  55. template < typename A , typename B >
  56. void Umin(A &a , const B &b){
  57. if(a > b){
  58. a = b;
  59. }
  60. }
  61.  
  62. ll bin_pow (ll a , ll n){
  63. if(n == 0){
  64. return 1;
  65. }
  66. if(n % 2 == 1){
  67. ll cnt = a * bin_pow(a , n - 1);
  68. return cnt;
  69. }
  70. else {
  71. ll cnt = bin_pow(a , n / 2);
  72. return cnt * cnt;
  73. }
  74. }
  75.  
  76. const int N = (int) 1e5 + 10;
  77. const int MOD = (int) 1e9 + 7;
  78. const int INF = (int) 1e9 + 10;
  79. const ll LLINF = (ll) 1e18 + 10;
  80. const int dx [] = { 0 , 0 , 1 , -1 };
  81. const int dy [] = { 1 , -1 , 0 , 0 };
  82.  
  83. int n, m, k;
  84. long long a[N], b[N], c[N];
  85. long long sa[N], sb[N], sc[N];
  86.  
  87. int main ()
  88. {
  89. //freopen("input.txt" , "r" , stdin);
  90. //freopen("output.txt" , "w" , stdout);
  91. ios_base::sync_with_stdio(false);
  92.  
  93. cin >> n >> m >> k;
  94. for(int i = 0; i < n; ++i) {
  95. cin >> a[i];
  96. sa[a[i]]++;
  97. }
  98. for(int i = 0; i < m; ++i) {
  99. cin >> b[i];
  100. sb[b[i]]++;
  101. }
  102. for(int i = 0; i < k; ++i) {
  103. cin >> c[i];
  104. sc[c[i]]++;
  105. }
  106.  
  107. for(int i = 1; i <= N - 9; ++i) {
  108. sa[i] += sa[i - 1];
  109. }
  110. for(int i = 1; i <= N - 9; ++i) {
  111. sb[i] += sb[i - 1];
  112. }
  113. for(int i = 1; i <= N - 9; ++i) {
  114. sc[i] += sc[i - 1];
  115. }
  116.  
  117. long long ans = 0;
  118. for(int i = 0; i < n; ++i) {
  119. long long z = a[i];
  120. long long t = sb[z * 2] - sb[z - 1];
  121. long long r = sc[z * 2] - sc[z - 1];
  122. if(t >= 2 && r >= 3) {
  123. t = (t * (t - 1)) / 2;
  124. r = (r * (r - 1) * (r - 2)) / 6;
  125. ans += t * r;
  126. }
  127. }
  128.  
  129. for(int i = 0; i < m; ++i) {
  130. long long z = b[i];
  131. long long t = sb[z * 2] - sb[z - 1];
  132. long long r = sc[z * 2] - sc[z - 1];
  133. long long l = sa[z * 2] - sa[z - 1];
  134. if(t >= 2 && r >= 3 && l >= 1) {
  135. t = (t * (t - 1)) / 2;
  136. r = (r * (r - 1) * (r - 2)) / 6;
  137. ans += t * r * l;
  138. }
  139. }
  140.  
  141. for(int i = 0; i < k; ++i) {
  142. long long z = c[i];
  143. long long t = sb[z * 2] - sb[z - 1];
  144. long long r = sc[z * 2] - sc[z - 1];
  145. long long l = sa[z * 2] - sa[z - 1];
  146. if(t >= 2 && r >= 3 && l >= 1) {
  147. t = (t * (t - 1)) / 2;
  148. r = (r * (r - 1) * (r - 2)) / 6;
  149. ans += t * r * l;
  150. }
  151. }
  152.  
  153. cout << ans << endl;
  154.  
  155. return 0;
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement