func_code_string: #include <bits/stdc++.h>   using namespace std;   struct chip {     char dir;     chip *u, *r, *d, *l;     chip(char _dir) {       dir = _dir;       u = r = d = l = NULL;     }   };   int main(int argc, char* argv[]) {     int n, m;     cin >> n >> m;     chip*** t;     t = (chip***)malloc(n * sizeof(chip**));     for (int i = 0; i < n; i++) t[i] = (chip**)malloc(m * sizeof(chip*));     char d;     for (int i = 0; i < n; i++) {       for (int j = 0; j < m; j++) {         cin >> d;         if (d !=  . ) {           t[i][j] = new chip(d);           if (i > 0) {             int k = i - 1;             while ((k >= 0) && (t[k][j] == NULL)) k--;             if (k >= 0) {               t[k][j]->d = t[i][j];               t[i][j]->u = t[k][j];             }           }           if (j > 0) {             int k = j - 1;             while ((k >= 0) && (t[i][k] == NULL)) k--;             if (k >= 0) {               t[i][k]->r = t[i][j];               t[i][j]->l = t[i][k];             }           }         } else           t[i][j] = NULL;       }     }     int max = 0;     int count = 0;     vector<chip*> v;     for (int i = 0; i < n; i++) {       for (int j = 0; j < m; j++) {         v.clear();         chip* c = t[i][j];         while (c != NULL) {           v.push_back(c);           chip* e;           if (c->dir ==  U ) e = c->u;           if (c->dir ==  R ) e = c->r;           if (c->dir ==  D ) e = c->d;           if (c->dir ==  L ) e = c->l;           if (c->u != NULL) c->u->d = c->d;           if (c->r != NULL) c->r->l = c->l;           if (c->d != NULL) c->d->u = c->u;           if (c->l != NULL) c->l->r = c->r;           c = e;         }         if (v.size() > max) {           max = v.size();           count = 0;         }         if (v.size() == max) count++;         for (vector<chip*>::reverse_iterator r = v.rbegin(); r < v.rend(); r++) {           chip* e = *r;           if (e->u != NULL) e->u->d = e;           if (e->r != NULL) e->r->l = e;           if (e->d != NULL) e->d->u = e;           if (e->l != NULL) e->l->r = e;         }       }     }     cout << max <<     << count << endl;     for (int i = 0; i < n; i++)       for (int j = 0; j < m; j++) free(t[i][j]);     for (int i = 0; i < n; i++) free(t[i]);     free(t);     return 0;   }   