奶牛棒球


题目

链接:1945. 奶牛棒球 - AcWing题库

农夫约翰的 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
*/

文章作者: 姜小白
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 姜小白 !
评论
  目录