Ejemplo n.º 1
0
static int load_test_case(int *credit, int *num_items, int **prices) {
	int r, i, *p;

	assert(credit);
	assert(num_items);
	assert(prices);

	r = get_int_from_stdin(credit);
	if (r != 1)
		return -errno;

	r = get_int_from_stdin(num_items);
	if (r != 1)
		return -errno;

	p = calloc(*num_items, sizeof(*p));
	if (!p)
		return -ENOMEM;
	
	for (i = 0; i < *num_items; ++i) {
		int price;

		r = get_int_from_stdin(&price);
		if (r != 1) {
			free(p);
			return -errno;
		}

		p[i] = price;
	}
	
	*prices = p;

	return 0;
}
Ejemplo n.º 2
0
int main(void) {
	int i, r, test_cases, credit, num_items, *prices = NULL;
	char *stream_buf = NULL;
	size_t size;

	stream = open_memstream(&stream_buf, &size);

	r = get_int_from_stdin(&test_cases);
	if (r < 0) {
		fprintf(stderr, "Failed to determine number of test cases\n");
		return EXIT_FAILURE;
	}

	for (i = 0; i < test_cases; ++i) { 
		free(prices);
		prices = NULL;

		r = load_test_case(&credit, &num_items, &prices);
		if (r < 0) {
			free(stream_buf);
			fprintf(stderr, "Failed to parse test cases from stdin\n");
			return EXIT_FAILURE;
		}

		solve(i + 1, credit, num_items, prices);
	}

	free(prices);

	printf("%s", stream_buf);
	free(stream_buf);
	
	return 0;
}
Ejemplo n.º 3
0
void round_two(struct player *players, int playerc) {
    fprintf(stdout, "+--------------------------------------------------+\n");
    fprintf(stdout, "|     Round Two                                    |\n");
    fprintf(stdout, "+--------------------------------------------------+\n");
    int input;

    int i, j;
    for (i = 0; i < playerc; i++) {
        fprintf(stdout, "%s's turn.\n", players[i].name);
        for (j = 0; j < AMMO; j++) {
            fprintf(stdout, "Shot #%d: ", j + 1);
            fflush(stdout);
            input = get_int_from_stdin();
            players[i].score += (input * 2);
        }
        print_score(players[i]);
    }
    print_result(players, playerc);
    shuffle_winners(players, playerc);
}
Ejemplo n.º 4
0
void round_three(struct player *players, int playerc) {
    fprintf(stdout, "+--------------------------------------------------+\n");
    fprintf(stdout, "|     Round Three                                  |\n");
    fprintf(stdout, "+--------------------------------------------------+\n");
    int input;

    int i, j;
    for (i = 0; i < playerc; i++) {
        fprintf(stdout, "%s's turn.\n", players[i].name);
        for (j = 0; j < AMMO; j++) {
            fprintf(stdout, "Shot #%d: ", j + 1);
            fflush(stdout);
            input = get_int_from_stdin();
            if (input == 5) {
                players[i].score += 5;
            } else {
                players[i].score += (input * 3);
            }
        }
        print_score(players[i]);
    }
}