MACHINE - Lập lịch trên 3 máy
Tác giả: khuc_tuan
Ngôn ngữ: Java
import java.io.*;
import java.util.*;
public class Main {
static class CV {
public int a,b,c,i,t;
}
public static void main(String[] Args) throws Exception {
BufferedReader kb=new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(kb.readLine());
CV[] c=new CV[n];
for(int i=0;i<n;++i) c[i]=new CV();
StringTokenizer st=new StringTokenizer(kb.readLine());
for(int i=0;i<n;++i) c[i].a = Integer.parseInt(st.nextToken());
st=new StringTokenizer(kb.readLine());
for(int i=0;i<n;++i) c[i].b = Integer.parseInt(st.nextToken());
st=new StringTokenizer(kb.readLine());
for(int i=0;i<n;++i) c[i].c = Integer.parseInt(st.nextToken());
for(int i=0;i<n;++i) {
c[i].i=i;
if(c[i].a<c[i].c) c[i].t=1;
else c[i].t=2;
}
Arrays.sort(c, new Comparator<CV>() {
public int compare(CV x,CV y) {
if(x.t!=y.t) return x.t-y.t;
if(x.t==1) return x.a+x.b-y.a-y.b;
if(x.t==2) return y.b+y.c-x.b-x.c;
return 0;
}
});
int ta=0,tb=0,tc=0;
for(int i=0;i<n;++i) {
ta += c[i].a;
if(tb<ta) tb=ta;
tb += c[i].b;
if(tc<tb) tc=tb;
tc += c[i].c;
}
System.out.println((ta>tb)?(ta>tc)?ta:tc:(tb>tc)?tb:tc);
for(int i=0;i<n;++i) System.out.print(c[i].i+1+" ");
System.out.println();
}
}