为什么这样遍历也行

在看不懂其他复杂的算法下,自己写了个简单遍历,这样也行?

实在不懂,有没有大佬解释一下。

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int n=Integer.parseInt(scanner.nextLine());
        PriorityQueue<double[]> q=new  PriorityQueue<>((a1,b) -> {
            double x=(a1[0]+ a1[1]);
            double y=(b[0]+b[1]);
            if(x>y){ return -1;}
            else{return 1;}
        });
        for(int i=0;i<n;i++){
            String[] s=scanner.nextLine().split(" ");
            q.offer(new double []{Integer.parseInt(s[0]),Integer.parseInt(s[1])});           
        }       
        double p1[]=q.poll();
        double p2[]=q.poll();
        double min=0;
        while (q.size()>0){
            if(min<Math.min((p1[1]+p2[1])/2.0,(p1[0]+p1[0])/2.0)){
                min=Math.min((p1[1]+p2[1])/2.0,(p1[0]+p1[0])/2.0);
            }
            p1=p2;
            p2=q.poll();
        }
        System.out.println(min);
    }    
}