Language: C

#include <stdio.h>

#define MAX_OF_BOOKS 12
#define MAX_OF_ALGORITHMS 12

int main(void) {
	/* ローカル変数 */
	int i_num_of_books;  /* 本の冊数 */
	int i_num_of_algorithms;  /* アルゴリズムの数 */
	int i_target;  /* 目標値 */
	int ai_cost[MAX_OF_BOOKS];  /* 本の金額配列先頭へのポインタ */
	int ai_paformance[MAX_OF_BOOKS];  /* 本から得られる理解度配列先頭へのポインタ */
	double ad_cost_paformance[MAX_OF_BOOKS];  /* 本のコストパフォーマンス配列先頭へのポインタ */
	int ai_understanding_of_algorithms[MAX_OF_ALGORITHMS];  /* 各本から得られるアルゴリズムごとの理解度 */
	unsigned u_loop_book;  /* 本のループカウンタ */
	unsigned u_loop_algorithm;  /* アルゴリズムのループカウンタ */
	unsigned au_descending_of_costperformance[MAX_OF_BOOKS];  /* コストパフォーマンス降順 */
	unsigned u_loop_serch;  /* 探索ループカウンタ */
	unsigned u_temp;  /* 降順一時記憶用 */
	int i_total_cost = 0;  /* コスト合計 */
	int i_total_understanding = 0; /* 理解度合計 */
	unsigned u_target_book;  /* 学習対象となる本の番号 */

	/* 本の数を取得 */
	scanf("%d", &i_num_of_books);

	/* アルゴリズムの数を取得 */
	scanf("%d", &i_num_of_algorithms);

	/* 目標理解度を取得 */
	scanf("%d", &i_target);

	/* 本のループ */
	for (u_loop_book = 0; u_loop_book < i_num_of_books; ++u_loop_book) {
		/* 本の値段を取得 */
		scanf("%d", &(ai_cost[u_loop_book]));

		/* 本から得られる理解度を初期化 */
		ai_paformance[u_loop_book] = 0;

		/* アルゴリズムループ */
		for (u_loop_algorithm = 0; u_loop_algorithm < i_num_of_algorithms; ++u_loop_algorithm) {
			/* 各アルゴリズムの理解度を取得 */
			scanf("%d", &(ai_understanding_of_algorithms[u_loop_algorithm]));

			/* 本から得られる理解度に加算 */
			ai_paformance[u_loop_book] += ai_understanding_of_algorithms[u_loop_algorithm];
		}

		/* 本のコストパフォーマンスを算出 */
		ad_cost_paformance[u_loop_book] = (double)(ai_paformance[u_loop_book]) / (double)(ai_cost[u_loop_book]);
	}

	/* コストパフォーマンス降順を初期化 */
	for (u_loop_book = 0; u_loop_book < i_num_of_books; ++u_loop_book) {
		ai_descending_of_costperformance[u_loop_book] = u_loop_book;
	}

	/* コストパフォーマンスの降順を取得 */
	for (u_loop_book = 0; u_loop_book < i_num_of_books; ++u_loop_book) {
		for (u_loop_serch = u_loop_book; u_loop_serch < i_num_of_books; ++u_loop_serch) {
			if (ad_cost_paformance[ai_descending_of_costperformance[u_loop_book]] < ad_cost_paformance[ai_descending_of_costperformance[u_loop_serch]]) {
				u_temp = ai_descending_of_costperformance[u_loop_book];
				ai_descending_of_costperformance[u_loop_book] = ai_descending_of_costperformance[u_loop_serch];
				ai_descending_of_costperformance[u_loop_serch] = u_temp;
			}
		}
	}

	/* コストパフォーマンス降順に学習 */
	for (u_loop_book = 0; u_loop_book < i_num_of_books; ++u_loop_book) {
		/* 学習対象となる本の番号を取得 */
		u_target_book = ai_descending_of_costperformance[u_loop_book];

		/* コストに加算 */
		i_total_cost += ai_cost[u_target_book];

		/* 理解度に加算 */
		i_total_understanding += ai_paformance[u_target_book];

		/* 目標達成判定 */
		if (i_total_understanding >= i_target) {
			break;
		}
	}

	/* 目標達成判定 */
	if (i_total_understanding >= i_target) {
		/* コストを表示 */
		printf("%d", i_total_cost);
	}
	else {
		printf("-1");
	}

	return 0;
}

Compiler output:
main.c: In function 'main':
main.c:56:17: error: 'ai_descending_of_costperformance' undeclared (first use in this function); did you mean 'au_descending_of_costperformance'?
   56 |                 ai_descending_of_costperformance[u_loop_book] = u_loop_book;
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                 au_descending_of_costperformance
main.c:56:17: note: each undeclared identifier is reported only once for each function it appears in