Cod sursa(job #2057771)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 4 noiembrie 2017 18:53:47
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

inline void Boost() {
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
}
typedef long long int ll;
typedef long double ld;

const int NMax = 1e5 + 50;

int A[NMax];
int B[NMax];
int C[NMax];

int Bin(const int v[], int hi, const int &val) {
	int lo = 1;

	int best = 0;
	while(lo <= hi) {
		int mid = (lo + hi) >> 1;

		if(v[mid] < val) {
			best = mid;
			lo = mid + 1;
		} else {
			hi = mid - 1;
		}
	}

	return best;
}

int main() {
	Boost();

	int n;
	cin >> n;

	for(int i = 1; i <= n; ++i) cin >> A[i];
	for(int i = 1; i <= n; ++i) cin >> B[i];
	for(int i = 1; i <= n; ++i) cin >> C[i];

	sort(A + 1, A + n + 1);
	sort(B + 1, B + n + 1);
	sort(C + 1, C + n + 1);

	ll ans = 0;
	for(int i = 1; i <= n; ++i) {
		ans += 1LL * Bin(A, n, B[i]) * (n - Bin(C, n, B[i] + 1));
	}	

	cout << ans;
	return 0;
}