#include #include #include int main() { int a; scanf("%d", &a); int n; int i; for(i = 0; i < a; i++) { scanf("%d", &n); int *pole = malloc(n * sizeof(int)); int *pole2 = malloc(n * sizeof(int)); char *pole3 = malloc(100000 * sizeof(char)); memset(pole3, 0, 100000 * sizeof(char)); char *pole4 = malloc(100000 * sizeof(char)); memset(pole4, 0, 100000 * sizeof(char)); int j, k, min = 0, max = 0; for(j = 0; j < n; j++) { scanf("%d", &pole[j]); pole3[pole[j]]++; } for(j = 0; j < n; j++) { scanf("%d", &pole2[j]); pole4[pole2[j]]++; } for(j = 0; j < n; j++) { for(k = 0; k < n; k++) { max += pole[j]>pole2[k] ? pole2[k] : pole[j]; } } for(k = 0; k < 100000; k++) { min += pole3[k]>pole4[k] ? pole3[k] * k : pole4[k] * k; } printf("Minimalni budova obsahuje %d kostek, maximalni %d kostek.\n", min, max); free(pole); free(pole2); free(pole3); free(pole4); } return 0; }