CAR - Lập lịch sửa chữa ô tô

Tác giả: RR

Ngôn ngữ: Java

import java.io.*;
import java.util.*;

class Car {
	int a, b, index;
	double c;
	Car() {
	}
}

class CarComparator implements Comparator<Car> {
	public static final double EPS = 1e-9;
	public int compare(Car X, Car Y) {
		if (Math.abs(X.c - Y.c) < EPS) return 0;
		else if (X.c < Y.c) return -1;
		else return 1;
	}
}

public class Main {
	public static void main(String args[]) {
		Scanner sc = new Scanner( System.in );
		PrintWriter pw = new PrintWriter( System.out );
		int n = sc.nextInt();
		Car[] a = new Car[n];
		
		for(int i = 0; i < n; i++)
			a[i] = new Car();
	
		for(int i = 0; i < n; i++) a[i].a = sc.nextInt();
		for(int i = 0; i < n; i++) a[i].b = sc.nextInt();
		for(int i = 0; i < n; i++) a[i].index = i+1;
		for(int i = 0; i < n; i++) a[i].c = (double)a[i].b / a[i].a;
		
		Comparator<Car> cc = new CarComparator();
		Arrays.sort(a, cc);
		
		long res = 0, time = 0;
		for(int i = 0; i < n; i++) {
			time += a[i].b;
			res += time * a[i].a;
		}
		pw.println(res);
		
		for(int i = 0; i < n; i++)
			pw.print( a[i].index + " ");
	
		pw.close();
	}
}

Download