#include int testCases, i, size, j; int look1[100], look2[100]; int values[100]; int max() { int x, y; int max = 0; int count1, count2; int value; for (x = 0; values[x] != 0; x++) { value = values[x]; count1 = 0; count2 = 0; for (y = 0; y < size; y++) { if (value <= look1[y]) count1++; } for (y = 0; y < size; y++) { if (value <= look2[y]) count2++; } max += count1 * count2; } return max; } int min() { int x, y; int max = 0; int count1, count2; int value; for (x = 0; values[x] != 0; x++) { value = values[x]; count1 = 0; count2 = 0; for (y = 0; y < size; y++) { //if (value == look1[y]) count1++; count1 += look1[y]; } for (y = 0; y < size; y++) { //if (value == look2[y]) count2++; count2 += look2[y]; } max += (count1 + count2 - 1) * value; } if (count1 > count2) return count1; return count2; } void addToList(int value) { int x; for (x = 0; x < size; x++) { if(values[x] == value) return; if(values[x] == 0) break; } values[x] = value; } void clearValues() { int local; for (local = 0; local < 100; local++) { values[local] = 0; } } int main() { scanf("%d", &testCases); for (i = 0; i < testCases; i++) { clearValues(); scanf("%d", &size); for (j = 0; j < size; j++) { scanf("%d", &look1[j]); addToList(look1[j]); } for (j = 0; j < size; j++) { scanf("%d", &look2[j]); addToList(look2[j]); } printf("Minimalni budova obsahuje %d kostek, maximalni %d kostek.\n", min(), max()); } return 0; }