QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#116144 | #5267. Bricks in the Wall | Sa3tElSefr | ML | 1925ms | 21208kb | C++23 | 4.7kb | 2023-06-28 10:51:54 | 2023-06-28 10:52:15 |
Judging History
answer
/// Till I Collapse
#pragma GCC optimize("O3")
#pragma GCC optimize ("unroll-loops")
#pragma GCC target("avx,avx2,fma")
#include "bits/stdc++.h"
#include <ext/pb_ds/assoc_container.hpp> // Common file
#include <ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update
using namespace std;
using namespace __gnu_pbds;
#define pb push_back
#define F first
#define S second
#define f(i, a, b) for(int i = a; i < b; i++)
#define all(a) a.begin(),a.end()
#define rall(a) a.rbegin(),a.rend()
#define sz(x) (int)(x).size()
#define mp(x, y) make_pair(x,y)
#define popCnt(x) (__builtin_popcountll(x))
#define int short
using ll = long long;
using ii = pair<int, int>;
using ull = unsigned long long;
const int N = (1 << 20) + 5, LG = 19, MOD = 1e9 + 7, MOD2 = 1e9 + 7;
const long double PI = acos(-1);
const long double EPS = 1e-7;
mt19937_64 mrand(chrono::steady_clock::now().time_since_epoch().count());
const int dx[] = {-1, 1, -1, 1};
const int dy[] = {1, -1, -1, 1};
using ld = long double;
int n, m;
multiset<int> r, c;
struct DSU {
vector<int> p, sz;
DSU() {}
DSU(int n) {
f(i, 0, n + 1)p.push_back(i), sz.push_back(1);
}
int get(int i) { return i == p[i] ? i : p[i] = get(p[i]); }
bool same(int i, int j) { return get(i) == get(j); }
int getSize(int i) { return sz[get(i)]; }
bool mrg(int u, int v) {
if (!same(u, v)) {
u = get(u);
v = get(v);
// if (sz[u] > sz[v])
// swap(u, v);
p[u] = v;
sz[v] += sz[u];
return true;
}
return false;
}
};
int max(int a, int b) {
if (a > b)return a;
return b;
}
void doWork() {
r.clear();
c.clear();
cin >> n >> m;
vector<DSU> rDSU(n + 1, DSU(m));
vector<DSU> cDSU(m + 1, DSU(n));
auto grid = vector<vector<char>>(n + 1, vector<char>(m + 1));
f(i, 1, n + 1) rDSU[i] = DSU(m);
f(i, 1, m + 1) cDSU[i] = DSU(n);
f(i, 1, n + 1)f(j, 1, m + 1) {
cin >> grid[i][j];
if (grid[i][j] == '.') {
if (grid[i][j - 1] == '.') {
rDSU[i].mrg(j, j - 1);
}
if (grid[i - 1][j] == '.') {
cDSU[j].mrg(i, i - 1);
}
}
}
f(i, 1, n + 1)f(j, 1, m + 1)if (grid[i][j] == '.') {
if (rDSU[i].get(j) == j) {
r.insert(rDSU[i].getSize(j));
}
if (cDSU[j].get(i) == i) {
c.insert(cDSU[j].getSize(i));
}
}
int ans = 0;
r.insert(0);
r.insert(0);
c.insert(0);
c.insert(0);
ans = max(ans, *(--r.end()) + *(-- --r.end()));
ans = max(ans, *(--c.end()) + *(-- --c.end()));
f(i, 1, n + 1)f(j, 1, m + 1) if (grid[i][j] == '.' && rDSU[i].get(j) == j) {
for (int k = j; k <= m && grid[i][k] == '.'; k++) {
int val1 = i - cDSU[k].get(i);
int val2 = cDSU[k].getSize(i) - val1 - 1;
c.erase(c.find(cDSU[k].getSize(i)));
c.insert(val1);
c.insert(val2);
}
ans = max(ans, rDSU[i].getSize(j) + *(--c.end()));
for (int k = j; k <= m && grid[i][k] == '.'; k++) {
int val1 = i - cDSU[k].get(i);
int val2 = cDSU[k].getSize(i) - val1 - 1;
c.insert(cDSU[k].getSize(i));
c.erase(c.find(val1));
c.erase(c.find(val2));
}
}
f(i, 1, n + 1)f(j, 1, m + 1) if (grid[i][j] == '.' && cDSU[j].get(i) == i) {
for (int k = i; k <= n && grid[k][j] == '.'; k++) {
int val1 = j - rDSU[k].get(j);
int val2 = rDSU[k].getSize(j) - val1 - 1;
r.erase(r.find(rDSU[k].getSize(j)));
r.insert(val1);
r.insert(val2);
}
ans = max(ans, cDSU[j].getSize(i) + *(--r.end()));
for (int k = i; k <= n && grid[k][j] == '.'; k++) {
int val1 = j - rDSU[k].get(j);
int val2 = rDSU[k].getSize(j) - val1 - 1;
r.insert(rDSU[k].getSize(j));
r.erase(r.find(val1));
r.erase(r.find(val2));
}
}
cout << ans << '\n';
}
int32_t main() {
#ifdef ONLINE_JUDGE
ios_base::sync_with_stdio(0);
cin.tie(0);
#endif // ONLINE_JUDGE
int t = 1;
cin >> t;
while (t--) {
doWork();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3424kb
input:
5 2 2 .. .. 4 5 ###.# #.... .##.# #.#.# 2 1 . . 2 3 ### #.# 5 4 ##.# ..#. #.#. .... #.##
output:
4 6 2 1 7
result:
ok 5 number(s): "4 6 2 1 7"
Test #2:
score: 0
Accepted
time: 137ms
memory: 3572kb
input:
10000 1 6 ..#..# 5 7 #..##.# ..###.# .####.. .##.##. ..#.#.# 1 7 #.####. 10 5 ##..# ###.# ....# #.#.. ##.## ###.# #.... ##.## ...## ..... 1 2 .# 1 3 ##. 7 6 ####.. #####. #...#. ..#..# ..##.# ##.#.. #..##. 5 4 ..## ..#. ..## ..#. ##.# 5 6 .##..# .#.... ##.#.# #..### ##.... 1 6 .#.### 1 2 ## 5 5 ##.....
output:
4 7 2 9 1 1 6 8 8 2 0 6 3 4 4 8 12 4 10 12 8 5 8 3 5 8 1 6 8 4 6 12 7 4 6 2 5 6 3 10 5 5 8 3 4 4 7 8 4 8 6 6 6 4 4 13 3 3 7 7 2 8 3 6 6 4 5 6 11 6 6 6 6 6 9 1 7 7 8 3 7 3 8 10 3 5 4 7 9 5 2 8 6 4 6 2 7 4 2 5 7 10 4 8 8 8 9 8 8 6 2 9 3 9 10 7 4 6 7 8 5 6 7 9 4 8 11 5 6 4 9 2 8 2 3 8 6 7 11 7 6 12 6 1...
result:
ok 10000 numbers
Test #3:
score: 0
Accepted
time: 46ms
memory: 3528kb
input:
10000 1 5 ##### 9 5 ##..# ##.## .#### #.### ###.# ..#.# ##### ####. ##### 10 9 .######## #.####### ##.#..### ########. #######.# ########. ######### ######### ######### ###.##### 5 2 ## ## ## ## .# 3 9 ######### ######### #######.# 8 8 ######## .#####.# ######## .####### #######. ###.#..# #.###### ....
output:
0 4 3 1 1 3 0 0 1 3 2 1 2 3 1 3 3 2 2 2 3 2 3 2 5 0 0 1 1 4 0 2 0 1 3 4 0 2 4 3 2 2 1 2 2 2 2 3 3 2 2 2 1 1 2 2 1 2 4 3 1 1 3 2 5 0 3 3 0 4 4 1 3 0 1 2 1 0 2 1 1 1 2 4 2 0 3 0 2 2 2 2 2 2 1 1 2 2 2 1 3 3 2 2 0 0 2 2 1 1 4 1 2 3 0 2 1 2 0 2 4 3 1 2 0 2 1 3 3 3 1 3 4 3 4 2 0 3 3 5 2 0 0 0 2 6 2 2 2 0 ...
result:
ok 10000 numbers
Test #4:
score: 0
Accepted
time: 37ms
memory: 3448kb
input:
10000 9 6 ###### ###### .##### ###### ###### ###### ###### #####. ###### 9 7 ####### ####### ####### ####### ####### ####### ####### ####### ####### 2 5 ##### ##### 7 5 ####. ##### .#### ##### ##### ##### ##### 1 4 #### 9 6 ###### ###### ###### ###### ###### ###### ###### ###### ###### 10 8 ########...
output:
2 0 0 2 0 0 2 2 1 2 0 0 1 1 2 0 0 2 0 0 1 2 2 0 0 1 1 2 2 2 2 0 2 2 1 0 0 1 0 2 1 1 1 2 1 3 3 2 0 1 3 0 2 2 1 2 2 1 0 0 2 1 2 2 2 3 1 0 2 1 0 1 1 2 1 1 0 1 3 0 0 0 1 0 1 0 2 2 1 2 0 0 3 0 0 0 0 2 0 2 1 0 0 2 2 1 0 0 2 0 1 0 2 2 1 1 1 0 2 2 2 0 0 0 0 2 1 2 0 2 2 0 0 0 0 2 2 0 0 0 0 2 0 1 2 1 1 2 0 3 ...
result:
ok 10000 numbers
Test #5:
score: 0
Accepted
time: 204ms
memory: 3424kb
input:
10000 5 4 .... .... .... .... .... 5 2 .. .# .. .. .. 1 8 ...#.... 8 10 .#..#...#. .#........ ...#...... .......... #......... .##....... .......... .......... 2 10 .......... ........#. 7 6 ...... ...... ...... ...... ...... ...#.. ...... 2 2 .# .. 9 1 . . . . . . . . . 5 1 . . . . . 9 5 ..... .......
output:
10 8 7 20 18 14 3 9 5 16 20 13 17 18 14 4 5 8 13 9 15 8 9 4 18 18 16 20 16 14 13 8 12 9 9 12 15 18 18 16 10 3 6 13 12 20 12 14 4 1 6 2 20 11 12 12 18 10 18 20 14 10 18 12 8 3 15 8 20 18 17 8 16 6 6 14 12 20 1 5 10 9 16 18 12 11 12 14 8 20 5 20 6 3 16 20 18 10 12 16 16 16 4 20 13 13 12 14 20 19 20 20...
result:
ok 10000 numbers
Test #6:
score: 0
Accepted
time: 111ms
memory: 3548kb
input:
1000 6 16 .##..#.##.###### #.##.###...#..## ##.#####.##.#.## .##..#.#.#..#... ..#..#.#.#.#.... #.#.#..#.#.#.#.# 8 17 ##..#...######.#. ..####.######..#. ###.###.#..#.#.## ..#.#.##..#.#.##. ##.#.#.##.#....## #..###..#.#.#.... .#.....#...#....# .#..#.##.##...##. 16 25 .##.###.####.##...#.##### #..##.#...
output:
9 10 21 9 12 6 13 13 12 7 8 11 9 7 10 8 11 23 10 13 14 14 9 15 17 10 12 13 10 13 12 12 7 10 12 3 14 11 12 13 14 5 14 14 11 14 18 6 12 8 11 15 15 15 10 15 2 12 11 14 9 16 9 17 6 13 6 20 12 2 8 19 16 17 19 13 19 4 18 13 8 11 8 3 13 15 16 15 11 4 11 8 4 11 6 13 16 10 13 16 16 7 13 25 14 20 16 14 3 11 1...
result:
ok 1000 numbers
Test #7:
score: 0
Accepted
time: 139ms
memory: 3528kb
input:
1000 3 185 #...#..##.###.##..#######..##..#.##.##..####.##.......###.##..##.....###.##..#####....######.####.##.###.###.#....###...#.....##.#....#....#..##..#.####.#.##.#.####..#...#####.#.#.##.#. .#.##.####.#.##..#.#.######....#..##..##..#.#.########.#.##.#.####.#...###......#.#..#.###...#...#.###....
output:
14 5 15 18 12 13 14 10 12 2 14 13 13 12 16 8 13 7 8 14 26 16 11 13 14 11 11 16 14 10 16 14 15 3 16 9 8 16 17 12 11 18 17 4 15 15 10 11 13 2 10 20 6 11 11 7 14 11 13 16 13 14 6 9 15 16 9 15 14 15 11 14 12 16 12 14 8 9 8 16 13 8 11 18 10 13 13 6 13 8 11 10 15 10 15 11 19 6 16 14 9 16 10 16 9 4 15 16 2...
result:
ok 1000 numbers
Test #8:
score: 0
Accepted
time: 143ms
memory: 3528kb
input:
1000 40 2 .. ## .# .. .. .. .. .. ## .# .. .. .. .. .. ## #. #. .# .. ## ## .. .# ## ## ## #. .. .# .# #. .# .. ## .# .. .# ## #. 19 1 # . # # # # . # # . # # . # . . # . # 24 4 .#.. .##. #.## #.## ##.. .### ##.# ##.. #... #..# ###. ..#. #### .#.# .### #.## ##.# ##.# .#.. ###. .#.# .... .... .### 12...
output:
12 3 8 15 16 4 17 12 19 16 16 7 5 18 8 13 7 15 10 18 13 6 16 19 3 8 10 9 14 12 11 12 10 15 17 15 13 11 9 14 1 16 11 14 14 9 17 14 6 10 17 12 17 20 18 15 19 10 17 14 15 6 15 9 13 4 16 12 10 7 10 9 14 12 21 8 15 11 10 9 9 14 15 19 7 5 17 13 10 17 10 10 14 5 18 15 8 11 10 9 17 8 11 9 11 10 12 17 10 10 ...
result:
ok 1000 numbers
Test #9:
score: 0
Accepted
time: 103ms
memory: 3832kb
input:
100 2 45 #.###..###.#..#..#...#####.##..#.....##.##.#. ..#..#.#.###.######.#.###...####.#...#.###.## 4 63 .#...####...####.####..#.#...#.###.###...##...#..#.#...##...#.. #.##..##.#.####.#....#.#...########.#.######..##.##.#..###.##.. #..##.#...##.#.#..###..#..#.###.#...........##.#.####..##.##### .#...
output:
8 16 15 21 22 12 26 19 24 15 21 20 14 19 16 17 1 19 22 18 20 29 18 21 22 16 16 22 27 27 19 24 13 13 18 14 12 15 19 20 18 21 24 20 14 15 17 20 20 22 17 16 26 20 26 20 18 16 23 24 13 18 17 22 18 13 23 23 23 17 17 22 25 16 21 13 13 18 17 16 24 26 17 23 19 6 8 25 20 14 21 21 21 22 15 17 16 15 15 18
result:
ok 100 numbers
Test #10:
score: 0
Accepted
time: 25ms
memory: 3708kb
input:
100 2 72 ##.###########.###.############.#########.##########.###########.####### #...###########.#.##.############.#.######################.##.###.####.. 75 58 ####.##########.###.#################.#####.############## #######..###############.######.############.############# #####################...
output:
5 7 7 6 6 6 6 8 8 6 6 6 6 4 9 6 6 4 7 6 7 7 8 7 6 6 7 4 4 5 4 6 6 7 6 6 6 9 7 4 4 6 4 7 4 6 8 8 6 6 7 7 6 6 6 5 6 6 6 2 7 4 5 8 8 6 7 4 6 2 7 6 7 6 5 6 4 7 3 4 8 6 8 3 6 5 6 4 7 2 6 6 2 4 8 5 4 6 6 3
result:
ok 100 numbers
Test #11:
score: 0
Accepted
time: 10ms
memory: 3576kb
input:
100 43 93 #######################################################################################.##### ############################################################################################# ############################################################################################# ########...
output:
4 3 4 0 3 2 2 3 2 2 2 3 2 4 2 3 2 2 3 4 3 2 2 3 2 3 2 2 2 3 2 2 3 2 2 3 2 2 3 3 2 2 0 0 2 2 2 2 3 0 3 2 3 1 3 2 3 2 2 3 3 4 2 2 3 2 2 2 2 2 2 2 2 2 2 4 2 2 2 3 2 2 2 3 2 2 1 2 2 2 2 2 2 2 0 3 2 2 4 1
result:
ok 100 numbers
Test #12:
score: 0
Accepted
time: 14ms
memory: 4376kb
input:
10 41 499 ##########################################.#####################################.#.####.################################.#####.############.#####.######################.#######.###########.######.######################.#.##############################.####.#.#######.###.###########...###.....
output:
9 6 8 9 8 4 8 6 6 6
result:
ok 10 numbers
Test #13:
score: 0
Accepted
time: 93ms
memory: 5596kb
input:
10 41 877 #.##########....##..##.#..###...#...#.###.#.#..#.#.#..##..#..#.##.#.#.##.......#..####..##.#.####.###.##.#...#..#..###...##.#.###.#.#.....###..#.###.#..#....#...#..#.#.##.#.##..#.#.#..##.#...#.#...#.##...###.###.....#.###.#..##.####..###.#.####.###......#....#.##.###.#.###.#..##....####......
output:
28 26 16 27 28 36 21 30 16 23
result:
ok 10 numbers
Test #14:
score: 0
Accepted
time: 25ms
memory: 4888kb
input:
10 859 68 ###.##############.##########..#########.##..#...####.##.#.######### .#.##.#################################################.#######.#### .####.###############..##########.###########.###################### ####.#####################.#.##.##.#########.##############.######## ########.#####...
output:
8 8 10 6 7 10 7 6 10 9
result:
ok 10 numbers
Test #15:
score: 0
Accepted
time: 129ms
memory: 6572kb
input:
10 963 50 ###.##...#....#..#..#...#.##..#.###...#.#..###...# ...####...#..#.##.#..#....###.#.#.##....#.#.##.#.. #....#.#......#######.##.###.###..###.#.#....##..# .####....#####..#.#.#.#.###.##.#....#...#..###.##. ##..##...#...#.#..#....#.#.#.#.#.##..#.#.#..#..##. .####.###.....#......####..##.........
output:
27 16 22 20 24 22 18 27 28 31
result:
ok 10 numbers
Test #16:
score: 0
Accepted
time: 16ms
memory: 4920kb
input:
10 23 107 #.####.####.###########..#############.####.#############################.#######.#######.########.######## ####.###################.#######.##################.#####.###################.#.########################### #######.##.#############################...##############.###########.###....
output:
84 173 187 212 57 46 172 39 8 18
result:
ok 10 numbers
Test #17:
score: 0
Accepted
time: 149ms
memory: 6268kb
input:
10 55 78 ...#.##.#####....##.##.#...#.#...###.###..#..#.##..##...####.....#.##.#....#.# .###.#..#.#.#####.#..######....#...#...#..###..#.######..####.##.#..##...#...# .####...#.##.....#.#.#..#...###.#........##....####.##.##.#..###..##.####....# #......##.#.......#..##.#.###..#.#......###.#..#..#.##...
output:
91 215 209 239 115 44 140 166 301 446
result:
ok 10 numbers
Test #18:
score: 0
Accepted
time: 145ms
memory: 5832kb
input:
10 3 2515 #..##..#..#..#..#...##...###...###.##..#..###.##..##.##.#.######..##.##..##.###.#....................................................................................................................................................................................................................
output:
4942 402 12899 15672 5915 2113 15630 15104 778 306
result:
ok 10 numbers
Test #19:
score: 0
Accepted
time: 222ms
memory: 6328kb
input:
10 9644 5 ##... ####. #..## ##..# #...# .#.#. ..#.. .#..# #.#.# ..##. #...# .#.#. #..#. #..#. ##... .###. #.##. ##.#. .#... ###.. ####. ..... .##.. #.##. .##.. ..... .###. ..#.. ...#. #.#.. ...#. ##.#. ...#. ...#. ##... .###. ..... .#.#. .#... ..##. ##.#. #..#. ###.. #.... #.... #.#.. ..#.. ##... .....
output:
18955 9043 17912 8479 12922 14983 15186 15888 15222 6580
result:
ok 10 numbers
Test #20:
score: 0
Accepted
time: 285ms
memory: 5960kb
input:
10 9485 6 ...... ..#..# ...... ##.... ...... ..##.. .....# ...#.. ....#. ...#.. ...... ....#. ...... ...... ...... .#.... ...... .#.#.# .#..#. ....#. #..#.. ....#. #..... .##... ...... .#.... ...... #....# ...... ..#... ...... ...... ...... .#.... ..#... .#.... #..... .#.#.. ...... ##.#.. .#.... ......
output:
159 172 137 139 160 140 170 152 85 136
result:
ok 10 numbers
Test #21:
score: 0
Accepted
time: 154ms
memory: 5280kb
input:
10 3233 5 ..... ..... ..... ..... ..... ..... ..... ..#.. ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..#.. ..... ..... ..... ..... ..... ..... ..... ..... ..... .#... ..... ..... ..... ..... .....
output:
909 1104 883 1415 414 508 1035 877 986 1050
result:
ok 10 numbers
Test #22:
score: 0
Accepted
time: 1925ms
memory: 21208kb
input:
1 1000 1000 ........#.#....#...............#....#.#.............#.#........#......#.......#...#....#...........#.............#...#............#..................##......#..#.................................##.....###......#..........#..............#.#.................#.......#...........#..............
output:
213
result:
ok 1 number(s): "213"
Test #23:
score: -100
Memory Limit Exceeded
input:
1 100000 10 .......... .......#.. .......#.. .........# #.....#... ........#. ##...#.... .#........ ......#... ..#..#...# ........#. ...#...... .......... .#.......# .#........ .......... .......... .........# .......... .......... ....#..... .......#.. .#........ .......... .....#..## ......#..# .....