1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | //Data Structure includes #include<vector> #include<stack> #include<set> #include<map> #include<queue> #include<deque> #include<string> //Other Includes #include<iostream> #include<algorithm> #include<cstring> #include<cassert> #include<cstdlib> #include<cstdio> #include<cmath> #define PB push_back using namespace std; struct point { int w; int h; }; char arr[1001][1001]; point dp[1001][1001]; int main() { int k; scanf("%d",&k); while (k--) { for (int i=0; i<1001; i++) { for (int j=0; j<1001; j++) { dp[i][j].w = 0; dp[i][j].h = 0; } } int r,c; scanf("%d%d",&r,&c); //cout<<"r: "<<r<<"c: "<<c<<endl; for (int i=0; i<r; i++) { for (int j=0; j<c; j++) scanf(" %c",&arr[i][j]); } //initialising DP for (int i=0; i<c; i++) { if (arr[0][i] == 'F') { if (dp[0][i-1].w != 0 && i>0) dp[0][i].w += (dp[0][i-1].w + 1); else dp[0][i].w = 1; dp[0][i].h = 1; } else { dp[0][i].w = 0; dp[0][i].h = 0; } } for (int i=0; i<r; i++) { if (arr[i][0] == 'F') { dp[i][0].w = 1; if (dp[i-1][0].h != 0 && i>0) dp[i][0].h += (dp[i-1][0].h + 1); else dp[i][0].h = 1; } else { dp[i][0].w = 0; dp[i][0].h = 0; } } //DP initialised /**********Main Code*************/ int left_area; int top_area; for (int i=1; i<r; i++) { for (int j=1; j<c; j++) { if (arr[i][j] == 'F') { left_area = (dp[i][j-1].w + 1) * min(dp[i][j-1].h, (dp[i-1][j].h+1)); top_area = (dp[i-1][j].h + 1) * min(dp[i-1][j].w, (dp[i][j-1].w+1)); if (left_area > top_area) { dp[i][j].w = dp[i][j-1].w + 1; dp[i][j].h = min(dp[i][j-1].h, (dp[i-1][j].h+1)); } else { dp[i][j].w = min(dp[i-1][j].w, (dp[i][j-1].w+1)); dp[i][j].h = dp[i-1][j].h + 1; } } else { dp[i][j].w = 0; dp[i][j].h = 0; } } } int max_area = 0; for (int i=0; i<r; i++) { for (int j=0; j<c; j++) { if (dp[i][j].w * dp[i][j].h > max_area) max_area = dp[i][j].w * dp[i][j].h; } } printf("%d\n",3*max_area); } return 0; } |
Ly9EYXRhIFN0cnVjdHVyZSBpbmNsdWRlcwojaW5jbHVkZTx2ZWN0b3I+CiNpbmNsdWRlPHN0YWNrPgojaW5jbHVkZTxzZXQ+CiNpbmNsdWRlPG1hcD4KI2luY2x1ZGU8cXVldWU+CiNpbmNsdWRlPGRlcXVlPgojaW5jbHVkZTxzdHJpbmc+CgoKLy9PdGhlciBJbmNsdWRlcwojaW5jbHVkZTxpb3N0cmVhbT4KI2luY2x1ZGU8YWxnb3JpdGhtPgojaW5jbHVkZTxjc3RyaW5nPgojaW5jbHVkZTxjYXNzZXJ0PgojaW5jbHVkZTxjc3RkbGliPgojaW5jbHVkZTxjc3RkaW8+CiNpbmNsdWRlPGNtYXRoPgoKI2RlZmluZSBQQiBwdXNoX2JhY2sKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBwb2ludAp7CiAgaW50IHc7CiAgaW50IGg7ICAgICAKfTsKCmNoYXIgYXJyWzEwMDFdWzEwMDFdOwpwb2ludCBkcFsxMDAxXVsxMDAxXTsKCmludCBtYWluKCkKewogICAgaW50IGs7CiAgICBzY2FuZigiJWQiLCZrKTsKICAgIHdoaWxlIChrLS0pCiAgICB7CiAgICAgICAgICBmb3IgKGludCBpPTA7IGk8MTAwMTsgaSsrKQogICAgICAgICAgewogICAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajwxMDAxOyBqKyspCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBkcFtpXVtqXS53ID0gMDsKICAgICAgICAgICAgICAgICAgZHBbaV1bal0uaCA9IDA7ICAgIAogICAgICAgICAgICAgIH0gICAgCiAgICAgICAgICB9CiAgICAgICAgICAKICAgICAgICAgIGludCByLGM7CiAgICAgICAgICBzY2FuZigiJWQlZCIsJnIsJmMpOwogICAgICAgICAgLy9jb3V0PDwicjogIjw8cjw8ImM6ICI8PGM8PGVuZGw7CiAgICAgICAgICBmb3IgKGludCBpPTA7IGk8cjsgaSsrKQogICAgICAgICAgewogICAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxjOyBqKyspCiAgICAgICAgICAgICAgc2NhbmYoIiAlYyIsJmFycltpXVtqXSk7ICAgIAogICAgICAgICAgfSAgICAgIAogICAgICAgICAgLy9pbml0aWFsaXNpbmcgRFAKICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxjOyBpKyspCiAgICAgICAgICB7CiAgICAgICAgICAgICAgaWYgKGFyclswXVtpXSA9PSAnRicpICAgIAogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoZHBbMF1baS0xXS53ICE9IDAgJiYgaT4wKQogICAgICAgICAgICAgICAgIGRwWzBdW2ldLncgKz0gKGRwWzBdW2ktMV0udyArIDEpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBkcFswXVtpXS53ID0gMTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBkcFswXVtpXS5oID0gMTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSAKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICBkcFswXVtpXS53ID0gMDsKICAgICAgICAgICAgICAgICAgIGRwWzBdW2ldLmggPSAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIAogICAgICAgICAgZm9yIChpbnQgaT0wOyBpPHI7IGkrKykKICAgICAgICAgIHsKICAgICAgICAgICAgICBpZiAoYXJyW2ldWzBdID09ICdGJykKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZHBbaV1bMF0udyA9IDE7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKGRwW2ktMV1bMF0uaCAhPSAwICYmIGk+MCkKICAgICAgICAgICAgICAgICBkcFtpXVswXS5oICs9IChkcFtpLTFdWzBdLmggKyAxKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZHBbaV1bMF0uaCA9IDE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgZHBbaV1bMF0udyA9IDA7CiAgICAgICAgICAgICAgICAgICBkcFtpXVswXS5oID0gMDsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAgLy9EUCBpbml0aWFsaXNlZAogIAogICAgICAgICAgLyoqKioqKioqKipNYWluIENvZGUqKioqKioqKioqKioqLwogICAgICAgICAgaW50IGxlZnRfYXJlYTsKICAgICAgICAgIGludCB0b3BfYXJlYTsKICAgICAgICAgIGZvciAoaW50IGk9MTsgaTxyOyBpKyspCiAgICAgICAgICB7CiAgICAgICAgICAgICAgZm9yIChpbnQgaj0xOyBqPGM7IGorKykKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIGlmIChhcnJbaV1bal0gPT0gJ0YnKQogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICBsZWZ0X2FyZWEgPSAoZHBbaV1bai0xXS53ICsgMSkgKiBtaW4oZHBbaV1bai0xXS5oLCAoZHBbaS0xXVtqXS5oKzEpKTsKICAgICAgICAgICAgICAgICAgICAgIHRvcF9hcmVhID0gKGRwW2ktMV1bal0uaCArIDEpICogbWluKGRwW2ktMV1bal0udywgKGRwW2ldW2otMV0udysxKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChsZWZ0X2FyZWEgPiB0b3BfYXJlYSkKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBkcFtpXVtqXS53ID0gZHBbaV1bai0xXS53ICsgMTsKICAgICAgICAgICAgICAgICAgICAgICAgZHBbaV1bal0uaCA9IG1pbihkcFtpXVtqLTFdLmgsIChkcFtpLTFdW2pdLmgrMSkpOyAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRwW2ldW2pdLncgPSBtaW4oZHBbaS0xXVtqXS53LCAoZHBbaV1bai0xXS53KzEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZHBbaV1bal0uaCA9IGRwW2ktMV1bal0uaCArIDE7ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9ICAgIAogICAgICAgICAgICAgICAgICBlbHNlIAogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgZHBbaV1bal0udyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgZHBbaV1bal0uaCA9IDA7ICAgICAKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0gICAgCiAgICAgICAgICB9CiAgICAKICAgIGludCBtYXhfYXJlYSA9IDA7CiAgICBmb3IgKGludCBpPTA7IGk8cjsgaSsrKQogICAgewogICAgICAgIGZvciAoaW50IGo9MDsgajxjOyBqKyspCiAgICAgICAgewogICAgICAgICAgICBpZiAoZHBbaV1bal0udyAqIGRwW2ldW2pdLmggPiBtYXhfYXJlYSkKICAgICAgICAgICAgbWF4X2FyZWEgPSBkcFtpXVtqXS53ICogZHBbaV1bal0uaDsgICAgCiAgICAgICAgfSAgICAKICAgIH0KICAgIHByaW50ZigiJWRcbiIsMyptYXhfYXJlYSk7CiAgIAogICAgfQogICAgCiAgICByZXR1cm4gMDsgICAgCn0K
-
upload with new input
-
result: Success time: 0.02s memory: 11536 kB returned value: 0
1 2 2 F R R R
3
-
result: Success time: 0.02s memory: 11536 kB returned value: 0
2 5 6 R F F F F F F F F F F F R R R F F F F F F F F F F F F F F F 5 5 R R R R R R R R R R R R R R R R R R R R R R R R R
45 0



