Advertisement
Guest User

Untitled

a guest
Jan 20th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.89 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void print_matrix(FILE *f, int **a, int m, int n)
  5. {
  6.     for (int i = 0; i != m; ++i)
  7.     {
  8.         for (int j = 0; j != n; ++j)
  9.             fprintf(f, "%5d", a[i][j]);
  10.         fprintf(f, "\n");
  11.     }
  12. }
  13.  
  14. int check_distinct(int **a, int row, int n)
  15. {
  16.     int unique = 1;
  17.     for (int j = 1; j != n; ++j)
  18.     {
  19.         int found = 0;
  20.         for (int prev = 0; prev != j; ++prev)
  21.             if (a[row][prev] == a[row][j])
  22.             {
  23.                 found = 1;
  24.                 break;
  25.             }
  26.         if (!found)
  27.             ++unique;
  28.     }
  29.  
  30.     return unique;
  31. }
  32.  
  33. int main()
  34. {
  35.     FILE *f;
  36.  
  37.     f = fopen("input.txt", "r");
  38.  
  39.     int m, n;
  40.     fscanf(f, "%d %d", &m, &n);
  41.  
  42.     int **arr;
  43.  
  44.     arr = (int**) malloc(sizeof(int*) * m);
  45.     for (int i = 0; i != m; ++i)
  46.         arr[i] = (int*) malloc(sizeof(int) * n);
  47.  
  48.     for (int i = 0; i != m; ++i)
  49.         for (int j = 0; j != n; ++j)
  50.             fscanf(f, "%d", &(arr[i][j]));
  51.  
  52.     fclose(f);
  53.  
  54.  
  55. //    print_matrix(stdout, arr, m, n);
  56. //    for (int i = 0; i != m; ++i)
  57. //        printf("%d: %d\n", i, check_distinct(arr, i, n));
  58.  
  59.     int imin = 0;
  60.     for (int i = 1; i != m; ++i)
  61.         if (check_distinct(arr, i, n) < check_distinct(arr, imin, n))
  62.             imin = i;
  63.  
  64. //    printf("min unique elements in %d row\n", imin);
  65.  
  66.  
  67.     for (int i = 0; i != m - imin - 1; ++i)
  68.         for (int j = 0; j != n; ++j)
  69.             arr[imin + i][j] = arr[imin + i + 1][j];
  70.  
  71.     --m;
  72. //    print_matrix(stdout, arr, m, n);
  73.  
  74.  
  75.     f = fopen("output.txt", "w");
  76.  
  77.     fprintf(f, "%d %d\n", m, n);
  78.     print_matrix(f, arr, m, n);
  79.  
  80.  
  81.     fclose(f);
  82.  
  83.  
  84.     for (int i = 0; i != m; ++i)
  85.         free(arr[i]);
  86.     free(arr);
  87.  
  88.  
  89.     f = fopen("output.txt", "r");
  90.  
  91.     int ch;
  92.     while ((ch = fgetc(f)) != EOF)
  93.         putchar(ch);
  94.  
  95.     fclose(f);
  96.  
  97.  
  98.     return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement