#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>


//#define DIVISOR 100 //gold

//#define DIVISOR 1000 //oil

//#define DIVISOR 200 //platinum

//#define DIVISOR 0
#define DIVISOR 25000 //copper
//#define DIVISOR 5000 //silver
//#define DIVISOR 1000 //ub

//#define DIVISOR 50 //es
//#define DIVISOR 2000 //zt


/*
#define DIVISOR 5000 //silver
#define DIVISOR 200 //platinum
#define DIVISOR 1000 //oil
#define DIVISOR 50 //es
#define DIVISOR 25000 //copper
*/

int main(int argc, char **argv){

	double *shares;
	double *prices;
	double total_shares = 0;
	uint32_t num1, num2;
	double commission = 0;
	double avg_price = 0;

//	double comm_per_trade = 6.95;
//	double comm_per_contract = 0.75;


        double comm_per_trade = 0;
        double comm_per_contract = 0;

	//double tmp1 = 0;

	if(argc < 3){
		printf("error input needs to be pairs!\n");
		return 0;
	}
	if((argc+1) % 2 != 0){
		printf("error input needs to be pairs!\n");
		return 0;
	}

	shares = (double *)malloc(sizeof(double)*(argc+1));
	prices = (double *)malloc(sizeof(double)*(argc+1));

	num2 = 0;
	for(num1=1; num1<argc-1; num1+=2){
		shares[num2] = atof(argv[num1]);
		total_shares += shares[num2];
		num2++;
		commission += comm_per_trade;
	}
	commission += comm_per_trade;
	//printf("total commission: %lf\n", commission);
	num2 = 0;
	for(num1=2; num1<argc; num1+=2){
		prices[num2] = atof(argv[num1]);
		avg_price += prices[num2] * shares[num2];

		commission += comm_per_contract*shares[num2]/DIVISOR;

		num2++;
	}

	commission += comm_per_contract*total_shares/DIVISOR;

	//commission += comm_per_contract*total_shares*num2;
	avg_price += commission;
	avg_price /= total_shares;


	printf("total shares: %lf\n", total_shares);
	printf("avg price %lf\n", avg_price);
	printf("total commission: %lf\n", commission);

	free(shares);
	free(prices);

	return 0;
}
