#include void print(int ** matrix, int a) { for(int i = 0; i < a; i++) { for(int j = 0; j < a; j++) printf("%d ", matrix[i][j]); //printf("(%d,%d)%d ", i,j, matrix[i][j]); printf("\n"); } } #define MIN2(a,b) ((a) < (b) ? (a) : (b)) int main() { int N,Ni; scanf("%d", &N); for( Ni = 0; Ni < N; Ni++ ) { int height; scanf("%d", &height); int * front = new int[height]; int * right = new int[height]; for(int i = 0; i < height; i++) scanf("%d", &front[i]); for(int i = 0; i < height; i++) scanf("%d", &right[i]); int minimal = 0; int maximal = 0; int ** matrix = new int* [height]; for(int i = 0; i < height; i++) { matrix[i] = new int[height]; for(int j = 0; j < height; j++) { if(front[i] == right[j]) { matrix[i][j] = front[i]; minimal += front[i]; } else matrix[i][j] = 0; } } for(int i = 0; i < height; i++) { for(int j = 0; j < height; j++) { //jsem na i,j int max = 0; for(int k = 0; k < height; k++) { if(matrix[i][k] > max) max = matrix[i][k]; if(matrix[k][j] > max) max = matrix[k][j]; } } } /** printf("------\n"); for(int i = 0; i < height; i++) printf("%d ", front[i]); printf("\n"); for(int i = 0; i < height; i++) printf("%d ", right[i]); printf("\n----\n"); **/ for(int i = 0; i < height; i++) { for(int j = 0; j < height; j++) { //matrix[i][j] = MIN2(front[i], right[j]); maximal += MIN2(front[i], right[j]); } } //print(matrix, height); printf("Minimalni budova obsahuje %d kostek, maximalni %d kostek.\n", minimal, maximal); } }