品仙宴 [PSA]  HackerRank - jim-and-the-orders JAVA

92 篇文章 0 订阅
75 篇文章 0 订阅

B - 品仙宴 [PSA]

 HackerRank - jim-and-the-orders 

尝过仙果之后,宴会正式开始,所有参加宴会的宾客都选好了自己喜欢的菜品。各位宾客点菜时间会有不同,并且各道菜的上菜时间也不尽相同,这样的话,有可能先点菜的会晚一些才能吃到自己喜欢的菜。请你预测一下点菜的客人等到自己所喜欢的菜品的上菜顺序是怎样的。

数据输入

第一行一个整数N,代表有N名宾客点菜,接下来有N行,每行是由空格分隔的两个整数t1,t2,第i行(1≤i≤N)的数据表示第i名宾客在t1时刻点了菜,这道菜在t2时间后可以上菜。

  • 1 ≤N ≤ 103
  • 1 ≤ t1,t2 ≤106

数据输出

按从早到晚的顺序,在一行内输出等到了自己点的菜的客人的序号(客人序号从1开始。若上菜时间相同,先给序号小的上菜),各数字之间用1个空格分隔。行首与行尾不能有多余空格。

样例1

输入样例

5
8 1
4 2
5 6
3 1
4 3

输出样例

4 2 5 1 3

提示

4号客人第3分钟点菜,1分钟后上菜,在第4分钟就可以等到菜,是第1个吃到菜的,所以第1个数字是4。而2号客人第4分钟点菜,2分钟后上菜,是第2个吃到菜的,所以第2个数字为2。类似的,5号客人7分钟后可以等到上菜。1号和3号在第11分钟后等到上菜,时间相同先给1号再给3号,所以顺序是4 2 5 1 3

样例2

输入样例

10
170 521
118 395
376 600
847 286
915 824
106 171
119 927
290 653
205 645
918 461

输出样例

6 2 1 9 8 3 7 4 10 5

也很简单,刷刷几分钟写完

先把题好好读懂 下手就很容易

甚至没必要动用结构体,序号的话,直接将不需要的arr[i][0]改成序号就可以了。

arr[i][1]表示上菜时间,arr[i][0]表示序号

排序输出即可

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
 
public class Main{
	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int arr[][] = new int[n][2];
		for (int i = 0; i < arr.length; i++) {
			arr[i][0] = sc.nextInt();
			arr[i][1] = sc.nextInt();
			arr[i][1] += arr[i][0];
			arr[i][0] = i+1;
		}
		Arrays.sort(arr, new Comparator<int[]>() {
			public int compare(int[] x, int[] y) {
				if(x[1]==y[1])
					return x[0]-y[0];
				return x[1]-y[1];
			}
		});
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i][0]+" ");
		}
		
		
	}	
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值