백준 11660 c++

magicdrill·2024년 4월 4일
0

백준 문제풀이

목록 보기
261/655

백준 11660 c++

#include <iostream>

using namespace std;

int input(int lower, int upper)
{
	//cout << "input()" << endl;
	int A;

	while (1)
	{
		cin >> A;
		if (A >= lower && A <= upper)
		{
			break;
		}
		else
		{
			;
		}
	}

	return A;
}

void input_table(int **table, int N)
{
	int i, j, temp;

	table[0][0] = 0;
	for (i = 1; i <= N; i++)
	{
		table[i][0] = 0;
		table[0][i] = 0;
	}

	for (i = 1; i <= N; i++)
	{
		for (j = 1; j <= N; j++)
		{
			temp = input(1, 1000);
			table[i][j] = table[i - 1][j] + table[i][j - 1] - table[i - 1][j - 1] + temp;
		}
	}

	return;
}

void input_xy(int** xy, int M, int N)
{
	int i, j;

	for (i = 0; i < M; i++)
	{
		xy[i][0] = input(1, N);//x1
		xy[i][1] = input(1, N);//y1
		xy[i][2] = input(xy[i][0], N);//x2
		xy[i][3] = input(xy[i][1], N);//y2
	}

	return;
}

void find_result(int** table, int** xy, int M)
{
	int i;
	int x1, y1, x2, y2;


	for (i = 0; i < M; i++)
	{
		x1 = xy[i][0];
		y1 = xy[i][1];
		x2 = xy[i][2];
		y2 = xy[i][3];
		cout << table[x2][y2] - table[x1-1][y2] - table[x2][y1-1] + table[x1-1][y1-1] << "\n";
	}

	return;
}

int main(void)
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N, M, i;
	int** table;
	int** xy;

	N = input(1, 1024);
	M = input(1, 100000);
	table = new int* [N+1];
	for (i = 0; i <= N; i++)
	{
		table[i] = new int[N + 1];
	}
	xy = new int* [M];
	for (i = 0; i < M; i++)
	{
		xy[i] = new int[4];
	}
	input_table(table, N);
	input_xy(xy, M, N);
	find_result(table, xy, M);

	for (i = 0; i < M; i++)
	{
		delete[] xy[i];
	}
	delete[] xy;
	for (i = 0; i <= N; i++)
	{
		delete[] table[i];
	}
	delete[] table;

	return 0;
}

0개의 댓글