//Name: Muhammad Nursyakirin Bin Amiri Haidi (A19EC0105)
//Name: Fatima Az dzikrun Binti Sahrol Nizam (A19EC0046)
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<cstring>
#include<iomanip>
using namespace std;

void getinput(int student[][3],string uni[][1])
{   
	ifstream input;
	input.open("input1.txt");
	if(!input.is_open())
	{
		cout<<"ERROR !! "<<endl;
		exit(0);
	}
	
	int j=0;
	while(input>>uni[j][0])
	{
	
			input>>student[j][0];
			input>>student[j][1];
			input>>student[j][2];
			j++;
	
}
	input.close();
	
}


void  calctotal(int student[][3],int&totali,int&totale,int &totalo)
{   
    for(int i=0;i<20;i++)
    {
    	totali+=student[i][0];
    	totale+=student[i][1];
    	totalo+=student[i][2];
	} 
	
	
} 
void getlowest(int student[][3],int &intake,int &enrol,int &out)
{
	
	int lowesti=student[0][0],loweste=student[0][1],lowesto=student[0][2];
	for(int i=0;i<20;i++)
	{
		if(student[i][0]<lowesti)
		 {
		 	lowesti=student[i][0];
		 	intake=i;
		 }
		if(student[i][1]<loweste)
		{
			loweste=student[i][1];
			enrol=i;
		}
		if(student[i][2]<lowesto)
		{
			lowesto=student[i][2];
			out=i;
		}
}
}
void gethighest(int student[][3],int &hintake,int &henrol,int &hout)
{
	
	int highi=student[0][0],highe=student[0][1],higho=student[0][2];
	for(int i=0;i<20;i++)
	{
		if(student[i][0]>highi)
		 {
		 	highi=student[i][0];
		 	hintake=i;
		 }
		if(student[i][1]>highe)
		{
		   highe=student[i][1];
			henrol=i;
		}
		if(student[i][2]>higho)
		{
			higho=student[i][2];
			hout=i;
		}
}
}

int main()
{  ofstream output;
    output.open("output.txt");
    int student[20][3];
	string uni[20][1];
	getinput(student,uni);
	int totalintake=0,totalenrol=0,totaloutput=0;
	calctotal(student,totalintake,totalenrol,totaloutput);
	int highi=0,highe=0,higho=0,lowi=0,lowe=0,lowo=0;
	gethighest(student,highi,highe,higho);
	getlowest(student,lowi,lowe,lowo);
	output<<left;
	output<<"    NUMBER OF STUDENTS' INTAKE, ENROLMENT AND OUTPUT"<<endl<<"\t\tIN PUBLIC UNIVERSITIES (2015)"<<endl;
	output<<"------------------------------------------------------------------------------------"<<endl;
	output<<setw(15)<<"University"<<setw(10)<<"Intake"<<setw(13)<<"Enrolment"<<"Output "<<endl;
	output<<"------------------------------------------------------------------------------------"<<endl;
	
    for(int i=0;i<20;i++)
    {
    	output<<setw(15)<<uni[i][0];
    	output<<setw(11)<<student[i][0]<<setw(12)<<student[i][1]<<setw(11)<<student[i][2];
    	output<<endl;
	}
	output<<"------------------------------------------------------------------------------------"<<endl;
	output<<setw(15)<<"Total"<<setw(11)<<totalintake<<setw(12)<<totalenrol<<setw(11)<<totaloutput<<endl;
	output<<fixed<<setprecision(2);
    output<<setw(15)<<"Average"<<setw(11)<<totalintake/20.0<<setw(12)<<totalenrol/20.0<<setw(11)<<totaloutput/20.0<<endl;
    output<<"-------------------------------------------------------------------------------------"<<endl<<endl;
    output<<"THE LOWEST NUMBER OF STUDENTS' INTAKE    = "<<student[lowi][0]<<"("<<uni[lowi][0]<<")"<<endl;
    output<<"THE LOWEST NUMBER OF STUDENTS' ENROLMENT    = "<<student[lowe][1]<<"("<<uni[lowe][0]<<")"<<endl;
    output<<"THE LOWEST NUMBER OF STUDENTS' OUTPUT    = "<<student[lowo][2]<<"("<<uni[lowo][0]<<")"<<endl<<endl;
    
    output<<"THE HIGHEST NUMBER OF STUDENTS' INTAKE    = "<<student[highi][0]<<"("<<uni[highi][0]<<")"<<endl;
    output<<"THE HIGHEST NUMBER OF STUDENTS' ENROLMENT    = "<<student[highe][1]<<"("<<uni[highe][0]<<")"<<endl;
    output<<"THE HIGHEST NUMBER OF STUDENTS' OUTPUT    = "<<student[higho][2]<<"("<<uni[higho][0]<<")"<<endl<<endl;
    
    output<<"THE RANGE OF NUMBER OF STUDENTS' INTAKE = "<<student[highi][0]-student[lowi][0]<<endl;
    output<<"THE RANGE OF NUMBER OF STUDENTS' ENROLMENT = "<<student[highe][1]-student[lowe][1]<<endl;
    output<<"THE RANGE OF NUMBER OF STUDENTS' OUTPUT = "<<student[higho][2]-student[lowo][2];
    output.close();
	
}
