import java.util.*;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String s = scanner.nextLine(); String[] ss = s.split(" "); Deque<integer> left = new LinkedList<integer>(); Deque<integer> right = new LinkedList<integer>(); int suml, sumr, mid, result, lSize, rSize; suml = sumr = 0; int n, r, p; p = Integer.valueOf(ss[0]); n = Integer.valueOf(ss[1]); int[] num = new int[2*n+10]; s = scanner.nextLine(); ss = s.split(" "); for(int i = 1; i <= n; i++){ num[i] = Integer.valueOf(ss[i-1]); } Arrays.sort(num,1,n+1); for(int i = n + 1; i <= 2*n; i++){ num[i] = num[i-n] + p; } mid = (1+n)/2; for(int i = 1; i <= mid; i++){ left.add(num[i]); suml += num[i]; } for(int i = mid + 1; i <= n; i++){ right.add(num[i]); sumr += num[i]; } lSize = left.size(); rSize = right.size(); result = sumr - suml + (lSize - rSize) * num[mid] - lSize * (lSize - 1) / 2 - rSize * (rSize + 1) / 2; for(int l = 2; l <= n; l++){ r = l + n - 1; mid = (l+r)/2; suml -= left.pollFirst(); right.add(num[r]); sumr += num[r]; int temp = right.pollFirst(); left.add(temp); sumr -= temp; suml += temp; lSize = left.size(); rSize = right.size(); result = Math.min(result, sumr - suml + (lSize - rSize) * num[mid] - lSize * (lSize - 1) / 2 - rSize * (rSize + 1) / 2); } System.out.println(result); }}</integer></integer></integer></integer>
点赞 4

相关推荐

秋招投简历提醒助手:个人经验是,一般面二十场左右就会进入侃侃而谈阶段。我今年七月末的时候开始的第一次面试,都是很多不会,回复很慢。后面慢慢迭代,到九月中的时候基本上面啥说啥,很放松的状态
远程面试的尴尬瞬间
点赞 评论 收藏
分享
hwwhwh:同双非,有大厂实习其实也没啥用,主要看运气,等就行了
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务