func_code_string: #include <bits/stdc++.h>   using namespace std;   int xx[4] = {0, 0, 1, -1};   int yy[4] = {1, -1, 0, 0};   int n, m, q;   int h[int(1e3 + 100)], dem, st[int(1e3 + 100)], vt[int(1e3 + 100)], top, mid;   int a[int(1e3 + 100)][int(1e3 + 100)];   int hl[int(1e3 + 100)][int(1e3 + 100)], cl[int(1e3 + 100)][int(1e3 + 100)],       cr[int(1e3 + 100)][int(1e3 + 100)], hr[int(1e3 + 100)][int(1e3 + 100)];   int solve() {     int res = 0;     h[dem + 1] = 0;     for (int i = (1), _b = (dem + 1); i <= _b; i++) {       int y = i;       while (top != 0 && h[i] <= st[top]) {         if (vt[top] <= mid && mid < i) res = max(res, (i - vt[top]) * st[top]);         y = vt[top];         top--;       }       if (h[i] > st[top]) {         top++;         st[top] = h[i];         vt[top] = y;       }     }     return res;   }   int main() {     scanf( %d%d%d , &n, &m, &q);     for (int i = (1), _b = (n); i <= _b; i++)       for (int j = (1), _b = (m); j <= _b; j++) scanf( %d , &a[i][j]);     for (int i = (1), _b = (n); i <= _b; i++)       for (int j = (1), _b = (m); j <= _b; j++)         if (a[i][j] == 1) {           hl[i][j] = hl[i][j - 1] + 1;           cl[i][j] = cl[i - 1][j] + 1;         } else {           hl[i][j] = 0;           cl[i][j] = 0;         }     for (int i = (n), _a = (1); i >= _a; i--)       for (int j = (m), _a = (1); j >= _a; j--)         if (a[i][j] == 1) {           hr[i][j] = hr[i][j + 1] + 1;           cr[i][j] = cr[i + 1][j] + 1;         } else {           hr[i][j] = 0;           cr[i][j] = 0;         }     for (int i = (1), _b = (q); i <= _b; i++) {       int s, x, y;       scanf( %d%d%d , &s, &x, &y);       if (s == 1) {         a[x][y] = 1 - a[x][y];         for (int j = (y), _b = (m); j <= _b; j++)           if (a[x][j]) {             hl[x][j] = hl[x][j - 1] + 1;           } else             hl[x][j] = 0;         for (int j = (y), _a = (1); j >= _a; j--)           if (a[x][j]) {             hr[x][j] = hr[x][j + 1] + 1;           } else             hr[x][j] = 0;         for (int i = (x), _b = (n); i <= _b; i++)           if (a[i][y]) {             cl[i][y] = cl[i - 1][y] + 1;           } else             cl[i][y] = 0;         for (int i = (x), _a = (1); i >= _a; i--)           if (a[i][y]) {             cr[i][y] = cr[i + 1][y] + 1;           } else             cr[i][y] = 0;       } else {         if (a[x][y] == 0) {           printf( 0 n );           continue;         }         int res = 0;         int l = x;         int r = x;         while (a[l - 1][y]) l--;         while (a[r + 1][y]) r++;         dem = 0;         for (int i = (l), _b = (r); i <= _b; i++) {           dem++;           h[dem] = hr[i][y];           if (i == x) mid = dem;         }         res = max(res, solve());         dem = 0;         for (int i = (l), _b = (r); i <= _b; i++) {           dem++;           h[dem] = hl[i][y];           if (i == x) mid = dem;         }         res = max(res, solve());         l = y;         r = y;         while (a[x][l - 1]) l--;         while (a[x][r + 1]) r++;         dem = 0;         for (int i = (l), _b = (r); i <= _b; i++) {           dem++;           h[dem] = cr[x][i];           if (i == y) mid = dem;         }         res = max(res, solve());         dem = 0;         for (int i = (l), _b = (r); i <= _b; i++) {           dem++;           h[dem] = cl[x][i];           if (i == y) mid = dem;         }         res = max(res, solve());         printf( %d n , res);       }     }   }   