18706
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 메뉴 구조체
typedef struct menu
{
char name[16]; // 메뉴 이름
int small_price; // s사이즈 가격
int medium_price; // m사이즈 가격
int large_price; // l사이즈 가격
}MENU;
int main(void){
// 테스트 케이스 입력
int test_case = 0;
scanf("%d", &test_case);
for(int i = 0; i < test_case; i++){
// 메뉴 개수와, 주문 개수 입력
int menu_num = 0, order = 0;
scanf("%d %d", &menu_num, &order);
// 배달비 계산
int delivery_price = 100/order;
// 메뉴 이름, 사이즈 별 가격 입력 받기
MENU *menu_arr =(MENU *)malloc(sizeof(MENU)*menu_num);
for(int j = 0; j < menu_num; j++){
getchar();
scanf("%s %d %d %d",
&menu_arr[j].name,
&menu_arr[j].small_price,
&menu_arr[j].medium_price,
&menu_arr[j].large_price);
}
for(int j = 0; j < order; j++){
// 총 가격에 배달비 기본으로 깔기
int total_price = delivery_price;
// 주문자 이름, 메뉴 이름, 사이즈 입력 받기
char name[16];
char menu_name[16];
char size[16];
scanf("%s %s %s", &name, &size, &menu_name);
// 주문자가 주문한 메뉴와 같은 메뉴 찾기
int k = 0;
for(k; k < menu_num; ){
if(strcmp(menu_name, menu_arr[k].name) == 0){
break;
}
k++;
}
// 사이즈 찾아서 총 가격에 맞는 사이즈의 가격 더해주기
if(strcmp(size,"small") == 0){
total_price += menu_arr[k].small_price;
}
else if(strcmp(size,"medium") == 0){
total_price += menu_arr[k].medium_price;
}
else if(strcmp(size,"large") == 0){
total_price += menu_arr[k].large_price;
}
// 특이한 반올림임
// 5배수인데 +- 1차이 나는 애들만 반올림 해주기
// ex) 26 -> 25, 49 -> 50
if((total_price%5) == 1){
total_price = total_price-1;
}
else if((total_price%5) == 4){
total_price = total_price+1;
}
// 출력
printf("%s %d\n", name, total_price);
total_price = 0;
}
}
return 0;
}