/*
#include <stdio.h>
int a[8][8]={};
int c=0;
void dfs(int x, int y, int color)
{
if(x<1||x>7||y<1||y>7||a[x][y]!=color) return;
a[x][y] = 0;
c++;
dfs(x, y+1, color);
dfs(x+1, y, color);
dfs(x, y-1, color);
dfs(x-1, y, color);
}
int main()
{
int count=0;
for(int i=1; i<=7; i++)
{
for(int j=1; j<=7; j++)
scanf("%d", &a[i][j]);
}
for(int i=1; i<=7; i++)
{
for(int j=1; j<=7; j++)
{
if(a[i][j]!=0)
{
c=0;
dfs(i,j,a[i][j]);
if(c>=3) count++;
}
}
}
printf("%d", count);
}
5 1 4 2 3
i=1
1 4 2 3 : 5
#include <stdio.h>
int a[26][26];
int n, c=0, count=0;
void bubble_sort(int b[], int count)
{
int temp;
for(int i=1; i<count; i++)
{
for(int j=1; j<=count-i; j++)
{
if(b[j] > b[j+1])
{
temp = b[j];
b[j] = b[j+1];
b[j+1] = temp;
}
}
}
}
void dfs(int x, int y)
{
if(x<1||x>n||y<1||y>n||a[x][y]!=1) return;
a[x][y] = 2;
c++;
dfs(x, y+1);
dfs(x+1, y);
dfs(x, y-1);
dfs(x-1, y);
}
int main()
{
int b[313]={};
scanf("%d", &n);
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
scanf("%1d", &a[i][j]);
}
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
if(a[i][j]==1)
{
c=0;
dfs(i, j);
b[++count]=c;
}
}
}
bubble_sort(b, count);
printf("%d\n", count);
for(int i=1; i<=count; i++)
{
printf("%d\n", b[i]);
}
}
#include <stdio.h>
int n;
int a[101][101]; //손상되도 됨(임시)
int d[101][101]; //원본
void dfs(int x, int y, int height)
{
if(x<1||x>n||y<1||y>n||a[x][y]<= height) return;
a[x][y] = 0;
dfs(x, y+1, height);
dfs(x, y-1, height);
dfs(x+1, y, height);
dfs(x-1, y, height);
}
void set()
{
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
a[i][j]=d[i][j];
}
}
int main()
{
int count=0, max=1;
scanf("%d", &n);
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
scanf("%d", &d[i][j]);
}
for(int h=1; h<100; h++)
{
set();
count=0;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
if(a[i][j]>h)
{
dfs(i,j,h);
count++;
}
}
}
if(count>max) max=count;
}
printf("%d", max);
}
dfs
4697
4572
3500
4023
*/
#include <stdio.h>
int a[101][101]={};
int n, m, k;
int c=0, count=0;
void dfs(int x, int y)
{
if(x<0||x>=m||y<0||y>=n||a[x][y]!=0) return;
a[x][y]=-1;
c++;
dfs(x+1, y);
dfs(x-1, y);
dfs(x, y+1);
dfs(x, y-1);
}
void bubble_sort(int b[], int cnt)
{
int temp;
for(int i=1; i<cnt; i++)
{
for(int j=1; j<=cnt-i; j++)
{
if(b[j] > b[j+1])
{
temp = b[j];
b[j] = b[j+1];
b[j+1] = temp;
}
}
}
}
int main()
{
int d[5000]={};
int p, q, r, s;
scanf("%d %d %d", &n, &m, &k);
for(int i=1; i<=k; i++)
{
scanf("%d %d %d %d", &p, &q, &r, &s);
for(int x=p; x<r; x++)
{
for(int y=q; y<s; y++) a[x][y]=1;
}
}
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
if(a[i][j]==0)
{
c=0;
dfs(i,j);
d[++count]=c;
}
}
}
bubble_sort(d, count);
printf("%d\n", count);
for(int i=1; i<=count; i++)
{
printf("%d ", d[i]);
}
}



