题目
农夫约翰的 N
头奶牛排成一排,每头奶牛都位于数轴中的不同位置上。
它们正在练习投掷棒球。
农夫约翰观看时,观察到一组三头牛 (X,Y,Z)
完成了两次成功的投掷。
牛 XX 把球扔给她右边的牛 Y
,然后牛 Y
把球扔给她右边的牛 Z
。
约翰指出,第二次投掷的距离不少于第一次投掷的距离,也不超过第一次投掷的距离的两倍。
请计算共有多少组牛 (X,Y,Z)
可能是约翰所看到的。
代码
import java.util.*;
public class Main {
static int n;
static int[] a = new int[1010];
public static void main(String[] args) {
Scanner inScanner = new Scanner(System.in);
n = inScanner.nextInt();
for(int i = 1; i <= n; i ++)
a[i] = inScanner.nextInt();
int ans = 0;
inScanner.close();
Arrays.sort(a, 1, n + 1);
for(int i = 1; i + 1 < n; i ++)
{
for(int j = i + 1, l = j + 1, r = j + 1; j < n; j ++)
{
int t = a[j] - a[i];
while(l <= n && t > a[l] - a[j]) l ++;
while(r <= n && a[r] - a[j] <= 2 * t) r ++;
ans += r - l;
}
}
System.out.println(ans);
}
}
/*
5
3
1
10
7
4
*/