#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>
#include <iomanip>
#define R 20
#define C 3
using namespace std ;

void getInput (string name [] ,int intak [] ,int enrol [] ,int outp [] )
{
	ifstream inp("input1.txt") ;
	
	if (!inp)
	{
	cout << "Error !!" ;
	exit(0);
	}
	
	for (int i = 0 ; i < R ; i++)
	{
		inp >> name [i] ;
		inp >> intak [i] ;
		inp >> enrol [i] ;
		inp >> outp [i] ;
		
	}
	
	inp.close() ;
}

int calctotal (int smth[])
{
	int sum = 0 ;
	
	for (int i = 0 ; i < R ; i ++)
	{
		sum += smth [i] ;
	}
	
	return sum ;
}

int getLowest (int smth[],int &x)
{
	int	low = smth [0] ;
	
	for (int i = 0 ; i < R ; i ++)
	{
		if (smth[i] < low)
		{
		low = smth [i]	;
		x = i	;
		}
	}
	
	return low ;	
}

int getHighest (int smth[] , int &x)
{
	int	high = smth [0] ;
	
	for (int i = 0 ; i < R ; i ++)
	{
		if (smth[i] > high)
		{
		high = smth [i]	;
		x = i ;
		}
	}
	
	return high ;	
}

int main ()
{
	
	int intak[20] , enrol [20] , outp[20] ;
	int x = 0 , y = 0 , z = 0 ;
	string name[20] ;
	
	getInput (name , intak ,enrol , outp) ;
	
	ofstream out("output.txt") ;
	
	out << "\t\tNUMBER OF STUDENTS' INTAKE, ENROLMENT AND OUTPUT" << endl 
	<<"\t\t\tIN PUBLIC UNIVERSITIES (2015)" << endl << endl ;
	
	for (int l = 0 ; l < 70 ; l++)
	{
		out << "-" ;
	}
	out << endl ;
	
	out << left ;
	out << "   " <<  setw(20) <<"UNIVERSITY" << setw(20) << "INTAKE" << setw(20) << "ENROLMENT" << setw(20) << "OUTPUT" << endl;
	
		for (int l = 0 ; l < 70 ; l++)
	{
		out << "-" ;
	}
	out << endl ;
	
	for (int i = 0 ; i < R ; i++)
	{
	
		out << "   " <<  setw(20) << name [i] ;
		out << setw(20) << intak [i] ;
		out << setw(20) << enrol [i];
		out << setw(20) << outp [i] ;
		out << endl ;
	}
	
	
	int totint = calctotal (intak) ;
	int totenr = calctotal (enrol) ;
	int totout = calctotal (outp) ;
	
		for (int l = 0 ; l < 70 ; l++)
	{
		out << "-" ;
	}
	out << endl ;
	
	out << "   " << setw(20) << "Total" << setw(20) << totint << setw(20) << totenr << setw(20) << totout << endl ;
	out << fixed << setprecision (2) ;
	out << "   " <<  setw(20) << "Average" << setw(20) << totint/20.00 << setw(20) << totenr/20.00 << setw(20) << totout/20.00 << endl;
	
		for (int l = 0 ; l < 70 ; l++)
	{
		out << "-" ;
	}
	out << endl ;
	
	int lowi = getLowest ( intak , x );
	int lowe = getLowest ( enrol , y );
	int lowo = getLowest ( outp , z );
	
	out << "THE LOWEST NUMBER OF STUDENTS' INTAKE\t  = " << lowi << " (" << name[x] << ")" <<endl ;
	out << "THE LOWEST NUMBER OF STUDENTS' ENROLMENT  = " << lowe << " (" << name[y] << ")"  << endl ;
	out << "THE LOWEST NUMBER OF STUDENTS' OUTPUT\t  = " << lowo << " (" << name[z] << ")"   << endl << endl ;
	
	int hi = getHighest ( intak , x );
	int he = getHighest ( enrol , y );
	int ho = getHighest ( outp , z );
	
	out << "THE HIGHEST NUMBER OF STUDENTS' INTAKE\t  = " << hi << " (" << name[x] << ")" <<endl ;
	out << "THE HIGHEST NUMBER OF STUDENTS' ENROLMENT = " << he << " (" << name[y] << ")" <<endl ;
	out << "THE HIGHEST NUMBER OF STUDENTS' OUTPUT\t  = " << ho << " (" << name[z] << ")" <<endl << endl ;
	
	out << "THE RANGE OF NUMBER OF STUDENTS' INTAKE\t  = " << hi-lowi << endl ;
	out << "THE RANGE OF NUMBER OF STUDENTS' ENROLMENT = " << he-lowe << endl ;
	out << "THE RANGE OF NUMBER OF STUDENTS' OUTPUT\t  = " << ho-lowo << endl ;
	

	out.close() ;
	
	return 0 ;

	
}
