#include #include #include int compare (const void *a, const void *b) { return ( *(int*)a - *(int*)b ); } int main(void) { FILE *input = fopen("cokolada.in", "r"); int M, N; fscanf(input, "%d", &M); fscanf(input, "%d", &N); int *rows = malloc(sizeof(int) * (M - 1)); for (int i = 0; i < M - 1; i++) fscanf(input, "%d", &rows[i]); int *cols = malloc(sizeof(int) * (N - 1)); for (int i = 0; i < N - 1; i++) fscanf(input, "%d", &cols[i]); fclose(input); qsort(rows, M-1, sizeof(int), compare); qsort(cols, N-1, sizeof(int), compare); int rowsI = M - 2; int colsI = N - 2; int colsCoef = 1; int rowsCoef = 1; int result = 0; // v každém kroku zpracujeme největší ještě nezpracovaný // zlom z obou (teď už) setříděných polí while (rowsI != -1 || colsI != -1) { if (rowsI != -1 && (colsI == -1 || rows[rowsI] > cols[colsI])) { result += rows[rowsI] * rowsCoef; rowsI--; colsCoef++; } else { result += cols[colsI] * colsCoef; colsI--; rowsCoef++; } } FILE *output = fopen("cena.out", "w"); fprintf(output, "%d", result); fclose(output); return 0; }