Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <iostream>
- #include <memory.h>
- #include <iterator>
- #include <cassert>
- #include <fstream>
- #include <iomanip>
- #include <cstdlib>
- #include <bitset>
- #include <vector>
- #include <cstdio>
- #include <string>
- #include <queue>
- #include <deque>
- #include <cmath>
- #include <ctime>
- #include <stack>
- #include <set>
- #include <map>
- using namespace std;
- //#define int long long
- #define fi first
- #define se second
- #define pb push_back
- #define mp make_pair
- #define all(x) x.begin() , x.end()
- typedef long long ll;
- typedef long double ld;
- typedef pair < ll , ll > pll;
- typedef pair < int , int > pii;
- template < typename T >
- T read(){
- T p = 1 , x = 0;
- char s = getchar();
- while(s == ' ' || s == '\n') s = getchar();
- if(s == '-') p = -1 , s = getchar();
- while(s >= '0' && s <= '9'){
- x = x * 10 + s - '0';
- s = getchar();
- }
- return x * p;
- }
- template < typename A , typename B >
- void Umax(A &a , const B &b){
- if(a < b)
- a = b;
- }
- template < typename A , typename B >
- void Umin(A &a , const B &b){
- if(a > b){
- a = b;
- }
- }
- ll bin_pow (ll a , ll n){
- if(n == 0){
- return 1;
- }
- if(n % 2 == 1){
- ll cnt = a * bin_pow(a , n - 1);
- return cnt;
- }
- else {
- ll cnt = bin_pow(a , n / 2);
- return cnt * cnt;
- }
- }
- const int N = (int) 1e5 + 10;
- const int MOD = (int) 1e9 + 7;
- const int INF = (int) 1e9 + 10;
- const ll LLINF = (ll) 1e18 + 10;
- const int dx [] = { 0 , 0 , 1 , -1 };
- const int dy [] = { 1 , -1 , 0 , 0 };
- int n, m, k;
- long long a[N], b[N], c[N];
- long long sa[N], sb[N], sc[N];
- int main ()
- {
- //freopen("input.txt" , "r" , stdin);
- //freopen("output.txt" , "w" , stdout);
- ios_base::sync_with_stdio(false);
- cin >> n >> m >> k;
- for(int i = 0; i < n; ++i) {
- cin >> a[i];
- sa[a[i]]++;
- }
- for(int i = 0; i < m; ++i) {
- cin >> b[i];
- sb[b[i]]++;
- }
- for(int i = 0; i < k; ++i) {
- cin >> c[i];
- sc[c[i]]++;
- }
- for(int i = 1; i <= N - 9; ++i) {
- sa[i] += sa[i - 1];
- }
- for(int i = 1; i <= N - 9; ++i) {
- sb[i] += sb[i - 1];
- }
- for(int i = 1; i <= N - 9; ++i) {
- sc[i] += sc[i - 1];
- }
- long long ans = 0;
- for(int i = 0; i < n; ++i) {
- long long z = a[i];
- long long t = sb[z * 2] - sb[z - 1];
- long long r = sc[z * 2] - sc[z - 1];
- if(t >= 2 && r >= 3) {
- t = (t * (t - 1)) / 2;
- r = (r * (r - 1) * (r - 2)) / 6;
- ans += t * r;
- }
- }
- for(int i = 0; i < m; ++i) {
- long long z = b[i];
- long long t = sb[z * 2] - sb[z - 1];
- long long r = sc[z * 2] - sc[z - 1];
- long long l = sa[z * 2] - sa[z - 1];
- if(t >= 2 && r >= 3 && l >= 1) {
- t = (t * (t - 1)) / 2;
- r = (r * (r - 1) * (r - 2)) / 6;
- ans += t * r * l;
- }
- }
- for(int i = 0; i < k; ++i) {
- long long z = c[i];
- long long t = sb[z * 2] - sb[z - 1];
- long long r = sc[z * 2] - sc[z - 1];
- long long l = sa[z * 2] - sa[z - 1];
- if(t >= 2 && r >= 3 && l >= 1) {
- t = (t * (t - 1)) / 2;
- r = (r * (r - 1) * (r - 2)) / 6;
- ans += t * r * l;
- }
- }
- cout << ans << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement