Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- using pi = pair <int, int>;
- using pii = pair <int, pi>;
- const int N = 1e3 + 10;
- const int M = 1e3 + 10;
- int di[] = {0, 1, 0, -1};
- int dj[] = {-1, 0, 1, 0};
- int ar[N][M];
- bool vs[N][M];
- int n, m;
- int Size(int ui, int uj){
- vs[ui][uj] = true;
- int dis = 1;
- for(int dij = 0, drt = ar[ui][uj]; dij < 4; dij ++, drt >>= 1){
- int vi = ui + di[dij];
- int vj = uj + dj[dij];
- if((drt&1) == 0 and !vs[vi][vj])
- dis += Size(vi, vj);
- }
- return dis;
- }
- int main(){
- scanf("%d%d", &n, &m);
- for(int i=1;i<=n;i++){
- for(int j=1;j<=m;j++){
- scanf("%d", &ar[i][j]);
- }
- }
- vector <int> room;
- for(int i=1;i<=n;i++){
- for(int j=1;j<=m;j++){
- if(!vs[i][j])
- room.push_back(Size(i, j));
- }
- }
- sort(room.begin(), room.end());
- int sz = room.size();
- for(int i=sz-1;i>=0;i--)
- printf("%d ", room[i]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement