//Student 1: Muhammad Nursyakirin Bin Amir Haidi (A19EC0105)
//Student 2: Fatima Az Dzikrun Binti Sahrol Nizam (A19EC0046)

#include <iostream>
#include <fstream>
#include <iomanip>
#define NUM_STATE 14
#define NUM_YEAR 10
using namespace std;


ofstream out("output.txt");

struct dataAcc
{
	int numAcc[10];
	string state;
	float avg;
};

float cal_Avg(int B[NUM_YEAR])
{
	int tot=0;
	for (int i=0;i<NUM_YEAR;i++)
	{
		tot+=B[i];
	}
	return tot/(float)NUM_YEAR;
}

void displayLine()
{
	for (int i = 0; i < 98; i++)
		out << "-";
	out << endl;	
}

void find_HighLow(dataAcc C[NUM_STATE])
{
	int high= C[0].numAcc[0],HiS=0,HiY=0;
	int year[]={2006,2007,2008,2009,2010,2011,2012,2013,2014,2015};
	for(int k=0;k<NUM_STATE;k++)
	{
		for(int l=0;l<NUM_YEAR;l++)
		{
			if (C[k].numAcc[l]>high)
			{
				high=C[k].numAcc[l];
				HiY=l;
				HiS=k;
			}
		}
	}
	displayLine();
	out<<endl;
	out<<"The highest number of road accidents = "<< high<<" at "<< C[HiS].state<<" on "<<year[HiY]
	   <<endl<<endl;
	displayLine();
}

int main()
{
	dataAcc acdnt[NUM_STATE];
	ifstream read("input1.txt");
	
	if(!read)
	{
		cout<<"Error!";
		exit(0);
	}
	
	for(int i=0;i<NUM_STATE;i++)
	{
		for(int k=0;k<NUM_YEAR;k++)
		{
			read>>acdnt[i].numAcc[k];
		}
		getline(read,acdnt[i].state);
	}
	
	for(int k=0;k<NUM_STATE;k++)
		{
			acdnt[k].avg= cal_Avg(acdnt[k].numAcc);
		}
	
	displayLine();
	out<<endl;
	out<<left<<setw(16)<<"\tSTATE"
	   <<setw(7)<<"2006"
	   <<setw(7)<<"2007"
	   <<setw(7)<<"2008"
	   <<setw(7)<<"2009"
	   <<setw(7)<<"2010"
	   <<setw(7)<<"2011"
	   <<setw(7)<<"2012"
	   <<setw(7)<<"2013"
	   <<setw(7)<<"2014"
	   <<setw(7)<<"2015"
	   <<"AVERAGE"<<endl<<endl;
	displayLine();
	out<<endl;
	   
	   
	for(int i=0;i<NUM_STATE;i++)
	{
		out<<left<<setw(16)<<acdnt[i].state;
		for(int k=0;k<NUM_YEAR;k++)
		{
			out<<right<<setw(7)<<acdnt[i].numAcc[k];
		}
		out<<setw(9)<<fixed<<setprecision(1)<<acdnt[i].avg;
		out<<endl<<endl;
	}
	find_HighLow(acdnt);
	
	read.close();
	out.close();	
	return 0;
}


