Skip to content

Commit

Permalink
jim and the orders
Browse files Browse the repository at this point in the history
  • Loading branch information
anushkasinghal11 committed Dec 20, 2020
1 parent 4395cd5 commit fdac15a
Showing 1 changed file with 91 additions and 0 deletions.
91 changes: 91 additions & 0 deletions Algorithms/Greedy/Jim and the Orders/solution.java
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();
}
}

0 comments on commit fdac15a

Please sign in to comment.