链接:https://codeforces.ml/contest/1324/problem/D

The next lecture in a high school requires two topics to be discussed. The ii-th topic is interesting by aiai units for the teacher and by bibi units for the students.

The pair of topics ii and jj (i<ji<j) is called good if ai+aj>bi+bjai+aj>bi+bj (i.e. it is more interesting for the teacher).

Your task is to find the number of good pairs of topics.

Input

The first line of the input contains one integer nn (2≤n≤2⋅1052≤n≤2⋅105) — the number of topics.

The second line of the input contains nn integers a1,a2,…,ana1,a2,…,an (1≤ai≤1091≤ai≤109), where aiai is the interestingness of the ii-th topic for the teacher.

The third line of the input contains nn integers b1,b2,…,bnb1,b2,…,bn (1≤bi≤1091≤bi≤109), where bibi is the interestingness of the ii-th topic for the students.

Output

Print one integer — the number of good pairs of topic.

Examples

input

Copy

5
4 8 2 6 2
4 5 4 1 3

output

Copy

7

input

Copy

4
1 3 2 4
1 3 2 4

output

Copy

0

代码:

#include<bits/stdc++.h>
using namespace std;
long long  n,k,ans;
long long a[200005],b[200005];
vector<long long>c,d;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	for(int i=1;i<=n;i++)
	{
		cin>>b[i];
		a[i]-=b[i];
	}
	for(int i=1;i<=n;i++)
	{
		if(a[i]>0)
		c.push_back(a[i]);
		else
		d.push_back(a[i]);
		
	} 
	sort(c.begin(),c.end());
	sort(d.rbegin(),d.rend());
	int j=0;
	ans=0;
	for(int i=0;i<c.size();i++) 
	{
		while(j<d.size()&&c[i]+d[j]>0)
		j++;
		ans+=j;
	}
	ans+=((long long)c.size()*(c.size()-1))/2;	
	cout<<ans<<endl;
}