#include <iostream>
#include <string>
#include <iomanip>
#include <cmath>
using namespace std;
 
int main () {
 
	int numberOfPackages;
	int totalPhoneUsage;
 
   // Fees, Minutes Provided, rate for additonal minutes for all Packages
    const float MONTHLYFEEA = 39.99;
	const int MINSPROVIDEDA = 450;
	const float RATEFORADDMINSA = 0.45;
 
	const float MONTHLYFEEB = 59.99;
	const int MINSPROVIDEDB = 900;
	const float RATEFORADDMINSB = 0.40;
 
	const float MONTHLYFEEC = 69.99;
 
	float totalOver;
	float totalA, totalB , totalC;
	float totalDueA, totalDueB;
 
 
 
	cout << "Select a subcription package: \n"
		 <<"1. Package A\n"
		 <<"2. Package B\n"
	 	 <<"3. Package C\n"
		 <<"4. Quit\n";
 
 
 
 
	// User inputs which packaged theyed like
 
    cin >> numberOfPackages;
	switch (numberOfPackages){
 
		case 1:{
 
		 cout << "You selected Package A\n";
 
		break;	
		}
 
		case 2:{
 
			cout << "You selected Package B\n";
			break;
		}
		case 3:{
 
			cout << "You selected Package C\n";
			break;
		}
		case 4: {
 
			cout << "You selected Quit\n";
			break;
			return 0; 
		}
		default: {
			cout <<"Invalid choice.Run program again and select a number 1-4\n";
			break;
            return 0;
		}
	}
 
	//Asking user for input on total phone usage in minutes
 
 
	cout << "How many minutes were used?: ";
	cin >> totalPhoneUsage;
 
 
cout << fixed << setprecision(2);
 
/*
This part calculates and displays the total due
*/
 
//Package A
if (numberOfPackages == 1){
	if (totalPhoneUsage <= MINSPROVIDEDA){
		cout << "The total amount due is $ "<< MONTHLYFEEA;
	}
 
	else if (totalPhoneUsage > MINSPROVIDEDA) {
		float totalOver = (totalPhoneUsage - MINSPROVIDEDA) * RATEFORADDMINSA;
		float totalDueA = MONTHLYFEEA + totalOver;
		cout << "The total amount due is:$ " << totalDueA << endl;
	}
}
 
 //Package B
else if (numberOfPackages == 2){
	if (totalPhoneUsage <= MINSPROVIDEDB) {
		cout << "The total amount due is $ "<< MONTHLYFEEB; }
 
    else if  (totalPhoneUsage > MINSPROVIDEDB){
		totalOver = (totalPhoneUsage - MINSPROVIDEDB) * RATEFORADDMINSB;
		totalDueB = MONTHLYFEEB + totalOver;
	cout << "The total amount due is:$ " << totalDueB << endl;
	}	
}
 
 //Package C which has not extra charge )
else if (numberOfPackages == 3) {
    cout << "The total amount due is $ " << MONTHLYFEEC << endl;
}
 
 
 
 
 
 // savings
 
 
 
 
/* 
Calculates total cost for all packages 
in order to check for potential savings
 
*/
 //Package A
 
if (totalPhoneUsage <= MINSPROVIDEDA) {
 	totalA = MONTHLYFEEA;
 }
else {
 	 totalA = MONTHLYFEEA + (totalPhoneUsage - MINSPROVIDEDA) * RATEFORADDMINSA;
 }
 
 // Package B 
 
 if(totalPhoneUsage <= MINSPROVIDEDB) {
 	totalB = MONTHLYFEEB;
 }
 else {
 	totalB = MONTHLYFEEB + (totalPhoneUsage - MINSPROVIDEDB) * RATEFORADDMINSB;	
 }
 
 totalC = MONTHLYFEEC;
 
 
 
 // displaying savings
 
if ( numberOfPackages == 1){
 	if (totalA > totalB) {
 		cout << "You would save $ "<< totalA - totalB << " with package B\n";
 	}
 	if (totalA > totalC) {
 		cout << "You would save $ " << totalA - totalC << " with package C.\n";
 	}
}	
 
else if (numberOfPackages == 2) {
 
 	if (totalB > totalC) {
 		cout << "You would save $ "<< totalB - totalC << " with package C.\n";
 	}
 
 }
 
 
 
 
 
 
 
 
	return 0; 
}