| Task: | Turrets |
| Sender: | double_deque |
| Submission time: | 2017-09-05 18:09:28 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.04 s | details |
| #2 | ACCEPTED | 0.04 s | details |
| #3 | ACCEPTED | 0.05 s | details |
| #4 | ACCEPTED | 0.04 s | details |
| #5 | ACCEPTED | 0.04 s | details |
| #6 | ACCEPTED | 0.03 s | details |
| #7 | ACCEPTED | 0.04 s | details |
| #8 | ACCEPTED | 0.03 s | details |
| #9 | ACCEPTED | 0.03 s | details |
| #10 | ACCEPTED | 0.05 s | details |
| #11 | ACCEPTED | 0.04 s | details |
| #12 | ACCEPTED | 0.04 s | details |
| #13 | ACCEPTED | 0.04 s | details |
| #14 | ACCEPTED | 0.03 s | details |
| #15 | ACCEPTED | 0.06 s | details |
| #16 | ACCEPTED | 0.08 s | details |
| #17 | ACCEPTED | 0.06 s | details |
| #18 | ACCEPTED | 0.05 s | details |
| #19 | ACCEPTED | 0.04 s | details |
| #20 | ACCEPTED | 0.07 s | details |
| #21 | ACCEPTED | 0.05 s | details |
| #22 | ACCEPTED | 0.06 s | details |
| #23 | ACCEPTED | 0.06 s | details |
| #24 | ACCEPTED | 0.06 s | details |
| #25 | ACCEPTED | 0.03 s | details |
| #26 | ACCEPTED | 0.04 s | details |
| #27 | ACCEPTED | 0.04 s | details |
| #28 | ACCEPTED | 0.07 s | details |
| #29 | ACCEPTED | 0.04 s | details |
| #30 | ACCEPTED | 0.04 s | details |
| #31 | ACCEPTED | 0.04 s | details |
| #32 | ACCEPTED | 0.04 s | details |
| #33 | ACCEPTED | 0.07 s | details |
| #34 | ACCEPTED | 0.04 s | details |
| #35 | ACCEPTED | 0.03 s | details |
Code
#include <iostream>
#include <string>
const int N = 1000;
int group [N*N];
int size [N*N];
int row_group[N];
int col_group[N];
int collapse(int ind) {
if (ind == -1) return -1;
if (group[ind] == ind) return ind;
group[ind] = collapse(group[ind]);
return group[ind];
}
void combine(int a, int b) {
a = collapse(a);
b = collapse(b);
if (a == b) return;
if (size[b] > size[a]) {
int tmp = b;
b = a;
a = tmp;
}
group[b] = a;
size[a] += size[b];
}
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
int h, w;
std::cin >> h >> w;
for (int y = 0; y < h; ++y) {
std::string str;
std::cin >> str;
for (int x = 0; x < w; ++x) {
if (str[x] == '+') {
group[x + y * w] = x + y * w;
size[x + y * w] = 1;
} else {
group[x + y * w] = -1;
}
}
}
for (int x = 0; x < w; ++x) {
int ind = -1;
for (int y = 0; y < h; ++y) {
if (group[x + y * w] != -1) {
//std::cout << (x + y * w) << " HIT!\n";
if (ind != -1) {
combine(group[ind], group[x + y * w]);
} else {
ind = group[x + y * w];
}
}
}
col_group[x] = ind;
//std::cout << col_group[x] << '\n';
}
for (int y = 0; y < h; ++y) {
int ind = -1;
for (int x = 0; x < w; ++x) {
if (group[x + y * w] != -1) {
if (ind != -1) {
combine(ind, group[x + y * w]);
} else {
ind = group[x + y * w];
}
}
}
row_group[y] = ind;
//std::cout << row_group[y] << '\n';
}
int max = 0;
for (int x = 0; x < w; ++x) {
for (int y = 0; y < h; ++y) {
int offer = 0;
row_group[y] = collapse(row_group[y]);
col_group[x] = collapse(col_group[x]);
if (row_group[y] == col_group[x]) {
if (row_group[y] != -1) {
offer = size[row_group[y]];
}
} else {
if (row_group[y] != -1) {
offer += size[row_group[y]];
}
if (col_group[x] != -1) {
offer += size[col_group[x]];
}
}
max = std::max(max, offer);
}
}
std::cout << max << '\n';
}
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 10 1 . . + . ... |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 3 7 .+++.++ .+..++. +++++.. |
| correct output |
|---|
| 13 |
| user output |
|---|
| 13 |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 8 4 .++. .... +..+ +.+. ... |
| correct output |
|---|
| 11 |
| user output |
|---|
| 11 |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 9 1 . . . . ... |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 5 2 +. .. .. .. ... |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 6 7 ....... ....... ....... ....... ... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 7 10 .......... .......... .......... .......... ... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 691 215 ................................. |
| correct output |
|---|
| 18 |
| user output |
|---|
| 18 |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 911 7 ..++..+ ++...+. +.++.+. .++.++. ... |
| correct output |
|---|
| 3195 |
| user output |
|---|
| 3195 |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 873 476 ................................. |
| correct output |
|---|
| 517 |
| user output |
|---|
| 517 |
Test 11
Verdict: ACCEPTED
| input |
|---|
| 120 184 ..................+.............. |
| correct output |
|---|
| 12 |
| user output |
|---|
| 12 |
Test 12
Verdict: ACCEPTED
| input |
|---|
| 944 46 ................................. |
| correct output |
|---|
| 4 |
| user output |
|---|
| 4 |
Test 13
Verdict: ACCEPTED
| input |
|---|
| 93 576 ................................. |
| correct output |
|---|
| 5 |
| user output |
|---|
| 5 |
Test 14
Verdict: ACCEPTED
| input |
|---|
| 360 409 ................................. |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 15
Verdict: ACCEPTED
| input |
|---|
| 1000 447 ................................. |
| correct output |
|---|
| 14 |
| user output |
|---|
| 14 |
Test 16
Verdict: ACCEPTED
| input |
|---|
| 1000 590 ++.+...++++++......+..++..++.+... |
| correct output |
|---|
| 295234 |
| user output |
|---|
| 295234 |
Test 17
Verdict: ACCEPTED
| input |
|---|
| 1000 592 ................................. |
| correct output |
|---|
| 764 |
| user output |
|---|
| 764 |
Test 18
Verdict: ACCEPTED
| input |
|---|
| 1000 14 .............. .............. .............. .............. ... |
| correct output |
|---|
| 4 |
| user output |
|---|
| 4 |
Test 19
Verdict: ACCEPTED
| input |
|---|
| 1000 65 ................................. |
| correct output |
|---|
| 4 |
| user output |
|---|
| 4 |
Test 20
Verdict: ACCEPTED
| input |
|---|
| 1000 401 ................................. |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 21
Verdict: ACCEPTED
| input |
|---|
| 1000 101 ................................. |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 22
Verdict: ACCEPTED
| input |
|---|
| 1000 995 ................................. |
| correct output |
|---|
| 24 |
| user output |
|---|
| 24 |
Test 23
Verdict: ACCEPTED
| input |
|---|
| 1000 296 .++.++.++..++.++...++...+....+... |
| correct output |
|---|
| 147617 |
| user output |
|---|
| 147617 |
Test 24
Verdict: ACCEPTED
| input |
|---|
| 1000 551 ................................. |
| correct output |
|---|
| 839 |
| user output |
|---|
| 839 |
Test 25
Verdict: ACCEPTED
| input |
|---|
| 1000 150 ................................. |
| correct output |
|---|
| 11 |
| user output |
|---|
| 11 |
Test 26
Verdict: ACCEPTED
| input |
|---|
| 1000 398 ................................. |
| correct output |
|---|
| 9 |
| user output |
|---|
| 9 |
Test 27
Verdict: ACCEPTED
| input |
|---|
| 1000 335 ................................. |
| correct output |
|---|
| 4 |
| user output |
|---|
| 4 |
Test 28
Verdict: ACCEPTED
| input |
|---|
| 1000 360 ................................. |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 29
Verdict: ACCEPTED
| input |
|---|
| 611 1000 ................................. |
| correct output |
|---|
| 19 |
| user output |
|---|
| 19 |
Test 30
Verdict: ACCEPTED
| input |
|---|
| 22 1000 .++.+.....+........+++.+++++..... |
| correct output |
|---|
| 10985 |
| user output |
|---|
| 10985 |
Test 31
Verdict: ACCEPTED
| input |
|---|
| 80 1000 .......+......................... |
| correct output |
|---|
| 974 |
| user output |
|---|
| 974 |
Test 32
Verdict: ACCEPTED
| input |
|---|
| 40 1000 ................................. |
| correct output |
|---|
| 6 |
| user output |
|---|
| 6 |
Test 33
Verdict: ACCEPTED
| input |
|---|
| 587 1000 ................................. |
| correct output |
|---|
| 9 |
| user output |
|---|
| 9 |
Test 34
Verdict: ACCEPTED
| input |
|---|
| 432 1000 ................................. |
| correct output |
|---|
| 6 |
| user output |
|---|
| 6 |
Test 35
Verdict: ACCEPTED
| input |
|---|
| 614 1000 ................................. |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
