fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. map<char,int>m;
  5. string a,b[35];
  6. bool visited[40][100];
  7. int dx[]={1,0,-1,0};
  8. int dy[]={0,1,0,-1};
  9.  
  10. void dfs(int x,int y,char p){
  11.  
  12. visited[x][y]=true;
  13. for(int i=0;i<4;i++){
  14. int xx = x + dx[i];
  15. int yy = y + dy[i];
  16. if(visited[xx][yy]==false && b[xx][yy]==' '){
  17. b[xx][yy] = p;
  18. dfs(xx,yy,p);
  19. }
  20. }
  21.  
  22. }
  23.  
  24. int main(){
  25.  
  26. int i=0;
  27. while(getline(cin,a)){
  28.  
  29. char mp[2000];
  30.  
  31. if(a[0]=='_'){
  32.  
  33. int num=0;
  34. for(int k=0;k<i-1;k++){
  35. for(int j=0;j<b[k].size();j++){
  36. if(m.find(b[k][j])==m.end()){
  37. mp[num]=b[k][j];
  38. num++;
  39. m[b[k][j]] = 1;
  40. }
  41. else{
  42. m[b[k][j]]++;
  43. }
  44. }
  45. }
  46.  
  47. int ma=0;
  48. char bun;
  49. for(int z=0;z<num;z++){
  50. if(mp[z]==' ') continue;
  51. //cout<<mp[z]<<" "<<m[mp[z]]<<"\n";
  52. if(m[mp[z]]> ma) {
  53. ma = m[mp[z]] ;
  54. bun = mp[z];
  55. }
  56. }
  57.  
  58. //cout<<bun<<"\n";
  59.  
  60. for(int k=0;k<i-1;k++){
  61. for(int j=0;j<b[k].size();j++){
  62. if(b[k][j]!=' ' && b[k][j]!=bun && visited[k][j]==false){
  63. dfs(k,j,b[k][j]);
  64. }
  65. }
  66. }
  67.  
  68. for(int k=0;k<i;k++){
  69. cout<<b[k]<<"\n";
  70. }
  71.  
  72.  
  73. cout<<a<<"\n";
  74. i=0;
  75. m.clear();
  76. memset(visited,false,sizeof(visited));
  77. }
  78. else{
  79. b[i]=a;
  80. i++;
  81. }
  82.  
  83.  
  84. }
  85.  
  86.  
  87.  
  88. }
  89.  
Success #stdin #stdout 0s 3480KB
stdin
  XXXXXXXXXXXXXXXXXXXX
  X      X           X
  X # #  XXXXXXXX /  X
  X             X    X
  XXXXXXXXXXXXXXXXXXXX
_____________________________

   XXXXXXXXXXXX       XXXXXX
  X       #   XXX  XXX   X X
  X  XX         X  X     X X
 X  X  X  XXXXXXX  XXXXXXX
 X   XX   X
  X       X  XXXX  XXXXXXXX
   XX     XXXX  X  X  /   X
    X           X  X    / X
    XXXXXXXXXXXXX  XXXXXXXX
_____________________________
stdout
  XXXXXXXXXXXXXXXXXXXX
  X######X///////////X
  X######XXXXXXXX////X
  X#############X////X
  XXXXXXXXXXXXXXXXXXXX
_____________________________

   XXXXXXXXXXXX       XXXXXX
  X###########XXX  XXX   X X
  X##XX#########X  X     X X
 X##X  X##XXXXXXX  XXXXXXX
 X###XX###X
  X#######X  XXXX  XXXXXXXX
   XX#####XXXX##X  X//////X
    X###########X  X//////X
    XXXXXXXXXXXXX  XXXXXXXX
_____________________________