Advertisement
Saleh127

UVA 776

Jun 23rd, 2021
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.59 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define test int t; cin>>t; for(int cs=1;cs<=t;cs++)
  5. ll n,m;
  6. char a[200][200];
  7. ll v[200][200];
  8. ll spce[200][200];
  9. ll col[200];
  10.  
  11. bool check(ll i,ll j,ll num,char c)
  12. {
  13. if(i<0 || j<0 || i>=n || j>=m || v[i][j]!=0 || a[i][j]!=c) return 0;
  14. return 1;
  15. }
  16.  
  17. void dfs(ll i,ll j,ll num,char c)
  18. {
  19. v[i][j]=num;
  20.  
  21. if(check(i,j+1,num,c)) dfs(i,j+1,num,c);
  22. if(check(i,j-1,num,c)) dfs(i,j-1,num,c);
  23. if(check(i+1,j,num,c)) dfs(i+1,j,num,c);
  24. if(check(i-1,j,num,c)) dfs(i-1,j,num,c);
  25. if(check(i+1,j-1,num,c)) dfs(i+1,j-1,num,c);
  26. if(check(i-1,j-1,num,c)) dfs(i-1,j-1,num,c);
  27. if(check(i+1,j+1,num,c)) dfs(i+1,j+1,num,c);
  28. if(check(i-1,j+1,num,c)) dfs(i-1,j+1,num,c);
  29. }
  30.  
  31.  
  32. ll digcount(ll xx)
  33. {
  34. ll r=1ll;
  35. xx/=10;
  36. while(xx)
  37. {
  38. r++;
  39. xx/=10;
  40. }
  41. return r;
  42. }
  43.  
  44. int main()
  45. {
  46. ios_base::sync_with_stdio(0);
  47. cin.tie(0);
  48. cout.tie(0);
  49.  
  50. string yy;
  51.  
  52. while(1)
  53. {
  54.  
  55. ll i,j,k,l,num=0;
  56. n=0;
  57. memset(v,0,sizeof v);
  58.  
  59. while(getline(cin,yy))
  60. {
  61. if(yy[0]=='%') break;
  62.  
  63. m=0;
  64.  
  65. for(i=0; yy[i]; i++)
  66. {
  67. if(yy[i]!=' ')
  68. {
  69. a[n][m++]=yy[i];
  70. }
  71. }
  72. n++;
  73. }
  74.  
  75. for(i=0; i<n; i++)
  76. {
  77. for(j=0; j<m; j++)
  78. {
  79. if(v[i][j]==0)
  80. {
  81. num++;
  82. dfs(i,j,num,a[i][j]);
  83. }
  84. }
  85. }
  86.  
  87. memset(spce,0,sizeof spce);
  88. memset(col,0,sizeof col);
  89.  
  90. for(i=0; i<n; i++)
  91. {
  92. for(j=0; j<m; j++)
  93. {
  94. spce[i][j]=digcount(v[i][j]);
  95. }
  96. }
  97.  
  98.  
  99. for(j=0; j<m; j++)
  100. {
  101. col[j]=0;
  102. for(i=0; i<n; i++)
  103. {
  104. if(col[j]<spce[i][j])
  105. {
  106. col[j]=spce[i][j];
  107. }
  108. }
  109. }
  110.  
  111.  
  112. for(i=0; i<n; i++)
  113. {
  114. for(j=0; j<m; j++)
  115. {
  116. if(j) cout<<" ";
  117.  
  118. k=col[j]-spce[i][j];
  119.  
  120. for(l=0; l<k; l++)
  121. {
  122. cout<<" ";
  123. }
  124.  
  125. cout<<v[i][j];
  126. }
  127. cout<<endl;
  128. }
  129. cout<<"%"<<endl;
  130.  
  131. if(yy[0]!='%') break;
  132.  
  133. }
  134.  
  135. return 0;
  136. }
  137.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement