package work1;
import java.util.*;
public class Dwork {
int n;
int f;
int bestf;
int x[];
int []bestx;
int [][]M;
int f1;
int f2[];
public Dwork(int n,int [][]m)
{
this.n=n;
this.M=m;
f1=0;
f=0;
bestf=Integer.MAX_VALUE;
bestx=new int[n+1];
x=new int[n+1];
for(int i=1;i<=n;i++)
{
x[i]=i;
}
f2=new int[n+1];
}
public void Swap(int[] x,int i,int j){
int temp=x[i];
x[i]=x[j];
x[j]=temp;
}
public void Backtrack(int i)
{
if(i>n) {
for(int j=1;j<=n;j++) {
bestx[j]=x[j];
}
bestf=f;
}else {
for(int j=i;j<=n;j++) {
f1+=M[x[j]][1];
f2[i]=((f2[i-1]>f1) ? f2[i-1]:f1)+M[x[j]][2];
f+=f2[i];
if(f<bestf) {
Swap(x,i,j);
Backtrack(i+1);
Swap(x,i,j);
}
f1-=M[x[j]][1];
f-=f2[i];
}
}
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int [][]M=new int[n+1][3];
System.out.println("输入作业在机器一二上的处理时间:");
for(int i=0;i<M.length;i++) {
for(int j=0;j<3;j++) {
M[i][j]=in.nextInt();
}
}
Dwork d=new Dwork(n,M);
d.Backtrack(1);
System.out.println("最优调度顺序为:");
for(int i=1;i<=n;i++) {
System.out.print(d.bestx[i]+" ");
}
System.out.println();
System.out.println("最优调度时间:"+d.bestf);
}
}