private void schedule_MaxMin(Vector<Task> metaSet, int currentTime){

        /*We do not actually delete the task from the meta-set rather mark it as removed*/
        boolean[] isRemoved=new boolean[metaSet.size()];

        /*Matrix to contain the completion time of each task in the meta-set on each machine.*/
        int c[][]=schedule_MinMinHelper(metaSet);
        int i=0;

        /*Minimum Completion Time of the ith task in the meta set*/
        int[] minComplTime=new int[metaSet.size()];
        int[] minComplMachine=new int[metaSet.size()];

        int tasksRemoved=0;
        do{
            int minTime=Integer.MAX_VALUE;
            int machine=-1;
            int taskNo=-1;
            /*Find the task in the meta set with the earliest completion time and the machine that obtains it.*/
            for(i=0;i<metaSet.size();i++){
                if(isRemoved[i])continue;
                for(int j=0;j<sim.m;j++){
                    if(c[i][j]<minTime){
                        minTime=c[i][j];
                        machine=j;                        
                    }
                }
                minComplTime[i]=minTime;
                minComplMachine[i]=machine;
                minTime=Integer.MAX_VALUE;
                machine=-1;
            }

            /*Find the task which has the maximum minimum completion time*/
            int maxMinComplTime=Integer.MIN_VALUE;
            for(int l=0;l<metaSet.size();l++){
                if(maxMinComplTime<minComplTime[l]){
                    maxMinComplTime=minComplTime[l];
                    taskNo=l;
                }
            }
            Task t=metaSet.elementAt(taskNo);
            machine=minComplMachine[taskNo];
            sim.mapTask(t, machine);

            /*Mark this task as removed*/
            tasksRemoved++;
            isRemoved[taskNo]=true;
            //metaSet.remove(taskNo);

            /*Update c[][] Matrix for other tasks in the meta-set*/
            for(i=0;i<metaSet.size();i++){
                if(isRemoved[i])continue;
                else{
                    c[i][machine]=sim.mat[machine]+sim.etc[metaSet.get(i).tid][machine];
                }
            }

        }while(tasksRemoved!=metaSet.size());
    }