import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = Integer.parseInt(sc.nextLine()); int r = Integer.parseInt(sc.nextLine()); int[] a = new int[n]; for(int i = 0; i < n ; i++){ a[i] = Integer.parseInt(sc.nextLine()); } Arrays.sort(a); for(int j = r; j <= n; j++){ find(a,j); } System.out.println(a[0]); } public static void find(int[] a,int r){ int n = a.length; int[] b = new int[n]; boolean isOdd = (r-1)%2 == 0; for(int i = 0; i < n ; i++){ if(i+r < n){ if(isOdd){ b[i] = a[(i+(r-1)/2)%n]; }else{ b[i] = Math.max(a[(i+(r-1)/2)],a[(i+(r-1)/2+1)]); } }else{ int index = i+ (r-1)/2 -(i+r-1-n) -1; if(isOdd){ b[i] = a[index]; }else{ b[i] = Math.max(a[index],a[index+1]); } } } for(int i = 0; i < n; i++){ a[i] = b[i]; } // b[i]=MED(a[i],a[(i+1)mod n],a[(i+2)mod n],...a[(i+r-1)mod n]) } } 看了你写的之后感觉自己像个**。。。
点赞 2

相关推荐

点赞 评论 收藏
分享
算法丰川祥:实际就两个人给他投,它这么说好显得自己比较抢手
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务