#include <stdio.h>

#define NJ 13
#define NP 2

int A[NJ] = { 12, 31, 63, 95, 99, 154, 198, 221, 304, 346, 411, 455, 537};
int S[NJ] = { 40, 32, 55, 48, 18, 50, 47, 18, 28, 54, 40, 72, 12};
int P[NP] = {0};

int max(int x, int y)
{
	return (x > y ? x : y);
}

void r( int n )
{
	int i, tmp, p;

	/* process job (n - 1) first */
	if( n > 0 ) {
		r( n - 1 );
	}

	/* find the first available processor, and store in variable p */
	for( i = 1, tmp = P[0], p = 0; i < NP; i++) {
		if( P[i] < tmp ) {
			tmp = P[i];
			p = i;
		}
	}

	/* calculate new available time */
	P[p] = max( P[p], A[n] ) + S[n];

	printf("Job %d arival at %d and run in processor %d from %d until %d\n", n + 1, A[n], p + 1, P[p] - S[n], P[p]);

	return;
}

main()
{
	r( NJ - 1 );
}

