Advertisement
Guest User

2.c

a guest
Nov 22nd, 2014
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.17 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <limits.h>
  4. #include <ctype.h>
  5. #include <string.h>
  6.  
  7.  
  8. void print_m(char **m, long n) {
  9.     long i = 0;
  10.     for (i = 0; i < n - 1; i++) {
  11.         printf("%s", m[i]);
  12.     }
  13.     if (i == n - 1) {
  14.         for (long j = 0; j < strlen(m[i]) - 1; j++) {
  15.             putchar(m[i][j]);
  16.         }
  17.     }
  18. }
  19.  
  20.  
  21. void my_free(char **m, long n) {
  22.     for (long i = 0; i < n; i++) {
  23.         free(m[i]);
  24.     }
  25.     free(m);
  26. }
  27.  
  28.  
  29. int main(void) {
  30.     long n, nn, nn_ans = 0;
  31.     long long tr1 = LONG_MIN, tr2;
  32.     long len2 = 0;
  33.     char **m1 = NULL, **m2 = NULL;
  34.     scanf("%ld\n", &n);
  35.     for (long k = 0; k < n; k++) {        // идем по матрицам
  36.         scanf("%ld\n", &nn);
  37.         m2 = (char **)malloc(nn * sizeof(char *));
  38.         tr2 = 0;
  39.         for (long i = 0; i < nn; i++) {      // идем по строкам матрицы
  40.             m2[i] = (char *)malloc(11 * nn * sizeof(char));    // 11 = 10 + 1 = len(2^32) + (nn * (len(' ') - 1) + len('\0'))
  41.             fgets(m2[i], 11, stdin);    // сохраненная строка: "значение\n\0"
  42.             len2 = (long)strlen(m2[i]);
  43.             long index = 0, number = 0, sgn = 1;
  44.             for (long j = 0; j < len2; j++) {        // идем по строке матрицы
  45.                 if (index == i) {
  46.                     if (!isdigit(m2[i][j])) {
  47.                         if (m2[i][j] == '-') {
  48.                             sgn = -1;
  49.                             continue;
  50.                         }
  51.                         tr2 += sgn * number;
  52.                     } else {
  53.                         number = 10 * number - '0' + m2[i][j];
  54.                     }
  55.                 }
  56.                 if (m2[i][j] == ' ') {
  57.                     index++;
  58.                 }
  59.             }
  60.         }
  61.         if (tr2 > tr1) {
  62.             tr1 = tr2;
  63.             my_free(m1, nn_ans);
  64.             m1 = m2;
  65.             m2 = NULL;
  66.             nn_ans = nn;
  67.         } else {
  68.             my_free(m2, nn);
  69.             m2 = NULL;
  70.         }
  71.     }
  72.     print_m(m1, nn_ans);
  73. //    printf("tr1 = %lld\n", tr1);
  74.     my_free(m1, nn_ans);
  75.     return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement