Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <limits.h>
- #include <ctype.h>
- #include <string.h>
- void print_m(char **m, long n) {
- long i = 0;
- for (i = 0; i < n - 1; i++) {
- printf("%s", m[i]);
- }
- if (i == n - 1) {
- for (long j = 0; j < strlen(m[i]) - 1; j++) {
- putchar(m[i][j]);
- }
- }
- }
- void my_free(char **m, long n) {
- for (long i = 0; i < n; i++) {
- free(m[i]);
- }
- free(m);
- }
- int main(void) {
- long n, nn, nn_ans = 0;
- long long tr1 = LONG_MIN, tr2;
- long len2 = 0;
- char **m1 = NULL, **m2 = NULL;
- scanf("%ld\n", &n);
- for (long k = 0; k < n; k++) { // идем по матрицам
- scanf("%ld\n", &nn);
- m2 = (char **)malloc(nn * sizeof(char *));
- tr2 = 0;
- for (long i = 0; i < nn; i++) { // идем по строкам матрицы
- m2[i] = (char *)malloc(11 * nn * sizeof(char)); // 11 = 10 + 1 = len(2^32) + (nn * (len(' ') - 1) + len('\0'))
- fgets(m2[i], 11, stdin); // сохраненная строка: "значение\n\0"
- len2 = (long)strlen(m2[i]);
- long index = 0, number = 0, sgn = 1;
- for (long j = 0; j < len2; j++) { // идем по строке матрицы
- if (index == i) {
- if (!isdigit(m2[i][j])) {
- if (m2[i][j] == '-') {
- sgn = -1;
- continue;
- }
- tr2 += sgn * number;
- } else {
- number = 10 * number - '0' + m2[i][j];
- }
- }
- if (m2[i][j] == ' ') {
- index++;
- }
- }
- }
- if (tr2 > tr1) {
- tr1 = tr2;
- my_free(m1, nn_ans);
- m1 = m2;
- m2 = NULL;
- nn_ans = nn;
- } else {
- my_free(m2, nn);
- m2 = NULL;
- }
- }
- print_m(m1, nn_ans);
- // printf("tr1 = %lld\n", tr1);
- my_free(m1, nn_ans);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement