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

const int RED = 1;
const int BLUE = 2;
const int GRAY = 3;

int solution(int N, int M, int** area, int area_row_len, int area_col_len, int C) {
	int answer = 0;
	
	int** paper = (int**)malloc(sizeof(int*) * N);
	for (int i = 0; i < N; i++) {
		paper[i] = (int*)malloc(sizeof(int) * N);
	}

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			paper[i][j] = 0;
		}
	}

	for (int i = 0; i < M; i++) {
		int* target = area[i];

		int from_r = target[0];
		int from_c = target[1];
		int to_r = target[2];
		int to_c = target[3];
		int color = target[4];

		for (int r = from_r; r <= to_r; r++) {
			for (int c = from_c; c <= to_c; c++) {
				if (paper[r][c] == 0) {
					paper[r][c] = color;
				}
				else if(paper[r][c] == color){
					paper[r][c] = GRAY;
				}
			}
		}
	}

	for (int r = 0; r < N; r++) {
		for (int c = 0; c < N; c++) {
			if (C == paper[r][c]) {
				answer += 1;
			}
		}
	}

	return answer;
}

// 아래는 테스트케이스 출력을 해보기 위한 main 함수입니다. 아래에는 잘못된 부분이 없으니 위의 코드만 수정하세요.

int main() {
    int N1 = 10;
    int M1 = 2;
	int area1_row_len = 2;
	int area1_col_len = 5;
	int** area1 = (int**)malloc(sizeof(int*) * area1_row_len);
	for(int i = 0; i < area1_row_len; i++)
		area1[i] = (int*)malloc(sizeof(int) * area1_col_len);

	area1[0][0] = 1;
	area1[0][1] = 1;
	area1[0][2] = 5;
	area1[0][3] = 4;
	area1[0][4] = 1;
	area1[1][0] = 2;
	area1[1][1] = 3;
	area1[1][2] = 6;
	area1[1][3] = 6;
	area1[1][4] = 2;
int C1 = 3;
	int ret1 = solution(N1, M1, area1, area1_row_len, area1_col_len, C1);
	// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
	printf("solution 함수의 반환 값은 %d입니다.\\n", ret1);
    
    int N2 = 10;
    int M2 = 2;
	int area2_row_len = 2;
	int area2_col_len = 5;
	int** area2 = (int**)malloc(sizeof(int*) * area2_row_len);
	for(int i = 0; i < area2_row_len; i++)
		area2[i] = (int*)malloc(sizeof(int) * area2_col_len);

	area2[0][0] = 1;
	area2[0][1] = 1;
	area2[0][2] = 5;
	area2[0][3] = 4;
	area2[0][4] = 1;
	area2[1][0] = 2;
	area2[1][1] = 3;
	area2[1][2] = 6;
	area2[1][3] = 6;
	area2[1][4] = 1;
    int C2 = 3;
	int ret2 = solution(N2, M2, area2, area2_row_len, area2_col_len, C2);
	// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
	printf("solution 함수의 반환 값은 %d입니다.\\n", ret2);

}