forked from adityabisoi/ds-algo-solutions
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
4395cd5
commit fdac15a
Showing
1 changed file
with
91 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
import java.io.*; | ||
import java.math.*; | ||
import java.security.*; | ||
import java.text.*; | ||
import java.util.*; | ||
import java.util.concurrent.*; | ||
import java.util.regex.*; | ||
|
||
public class Solution { | ||
|
||
// Complete the jimOrders function below. | ||
static int[] jimOrders(int[][] orders) { | ||
// class to contain finish time and order number | ||
class Order { | ||
int finish; | ||
int orderno; | ||
|
||
Order(int f, int c) { | ||
finish = f; | ||
orderno = c; | ||
} | ||
} | ||
ArrayList<Order> order = new ArrayList<Order>(); | ||
for (int i = 0; i < orders.length; i++) { | ||
order.add(new Order(orders[i][0] + orders[i][1], i + 1)); | ||
} | ||
|
||
// compare and sort the orders on basis of finish time | ||
|
||
Collections.sort(order, new Comparator<Order>() { | ||
public int compare(Order o1, Order o2) { | ||
if (o1.finish < o2.finish) { | ||
return -1; | ||
|
||
// if the finish time is same, one with smaller order number is given priority | ||
} else if (o1.finish == o2.finish) { | ||
if (o1.orderno < o2.orderno) { | ||
return -1; | ||
} else { | ||
return 1; | ||
} | ||
} else { | ||
return 1; | ||
} | ||
} | ||
}); | ||
int[] ret = new int[orders.length]; | ||
for (int i = 0; i < order.size(); i++) { | ||
ret[i] = order.get(i).orderno; | ||
} | ||
return ret; | ||
|
||
} | ||
|
||
private static final Scanner scanner = new Scanner(System.in); | ||
|
||
public static void main(String[] args) throws IOException { | ||
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH"))); | ||
|
||
int n = scanner.nextInt(); | ||
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); | ||
|
||
int[][] orders = new int[n][2]; | ||
|
||
for (int i = 0; i < n; i++) { | ||
String[] ordersRowItems = scanner.nextLine().split(" "); | ||
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); | ||
|
||
for (int j = 0; j < 2; j++) { | ||
int ordersItem = Integer.parseInt(ordersRowItems[j]); | ||
orders[i][j] = ordersItem; | ||
} | ||
} | ||
|
||
int[] result = jimOrders(orders); | ||
|
||
for (int i = 0; i < result.length; i++) { | ||
bufferedWriter.write(String.valueOf(result[i])); | ||
|
||
if (i != result.length - 1) { | ||
bufferedWriter.write(" "); | ||
} | ||
} | ||
|
||
bufferedWriter.newLine(); | ||
|
||
bufferedWriter.close(); | ||
|
||
scanner.close(); | ||
} | ||
} |