Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- void print_matrix(FILE *f, int **a, int m, int n)
- {
- for (int i = 0; i != m; ++i)
- {
- for (int j = 0; j != n; ++j)
- fprintf(f, "%5d", a[i][j]);
- fprintf(f, "\n");
- }
- }
- int check_distinct(int **a, int row, int n)
- {
- int unique = 1;
- for (int j = 1; j != n; ++j)
- {
- int found = 0;
- for (int prev = 0; prev != j; ++prev)
- if (a[row][prev] == a[row][j])
- {
- found = 1;
- break;
- }
- if (!found)
- ++unique;
- }
- return unique;
- }
- int main()
- {
- FILE *f;
- f = fopen("input.txt", "r");
- int m, n;
- fscanf(f, "%d %d", &m, &n);
- int **arr;
- arr = (int**) malloc(sizeof(int*) * m);
- for (int i = 0; i != m; ++i)
- arr[i] = (int*) malloc(sizeof(int) * n);
- for (int i = 0; i != m; ++i)
- for (int j = 0; j != n; ++j)
- fscanf(f, "%d", &(arr[i][j]));
- fclose(f);
- // print_matrix(stdout, arr, m, n);
- // for (int i = 0; i != m; ++i)
- // printf("%d: %d\n", i, check_distinct(arr, i, n));
- int imin = 0;
- for (int i = 1; i != m; ++i)
- if (check_distinct(arr, i, n) < check_distinct(arr, imin, n))
- imin = i;
- // printf("min unique elements in %d row\n", imin);
- for (int i = 0; i != m - imin - 1; ++i)
- for (int j = 0; j != n; ++j)
- arr[imin + i][j] = arr[imin + i + 1][j];
- --m;
- // print_matrix(stdout, arr, m, n);
- f = fopen("output.txt", "w");
- fprintf(f, "%d %d\n", m, n);
- print_matrix(f, arr, m, n);
- fclose(f);
- for (int i = 0; i != m; ++i)
- free(arr[i]);
- free(arr);
- f = fopen("output.txt", "r");
- int ch;
- while ((ch = fgetc(f)) != EOF)
- putchar(ch);
- fclose(f);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement