NK2MFS - Lập lịch trên hai 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,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());
for(int i=0;i<n;++i) {
c[i].i=i;
if(c[i].a<c[i].b) 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-y.a;
if(x.t==2) return y.b-x.b;
return 0;
}
});
int ta=0,tb=0;
for(int i=0;i<n;++i) {
ta += c[i].a;
if(tb<ta) tb=ta;
tb += c[i].b;
}
System.out.println(Math.max(ta,tb));
for(int i=0;i<n;++i) System.out.print(c[i].i+1+" ");
System.out.println();
}
} 

Download