【编程题】腾讯第二次笔试第二题(Java实现)20190901
题目描述
有n个顾客排队买东西,每个人有两个属性ai和bi,第i个人站在位置j的情况下的不满意度为ai*(j-1)+bi*(n-j);,商家希望调整排队顺序使不满意度最低,输出最低的不满意度。
输入输出描述
输入
第一行为n个人
后面输入n行,每行输入两个数,分别表示第i个人的ai和bi
输出
输出一个数表示最低的不满意度
题目代码
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int ans=0;
Queue<Node>queue=new PriorityQueue<>((i,j)->(int)((j.a-j.b)-(i.a-i.b)));
for(int i=0;i<n;i++){
long a=sc.nextInt();
long b=sc.nextInt();
queue.offer(new Node(a,b));
}
int index=1;
while (!queue.isEmpty()){
Node temNode=queue.poll();
long value=(temNode.a-temNode.b)*index-temNode.a+temNode.b*n;
ans+=value;
index++;
}
System.out.println(ans);
sc.close();
}
}
class Node{
long a;
long b;
public Node(){}
public Node(long a,long b){
this.a=a;
this.b=b;
}
}