Untitled
unknown
plain_text
4 years ago
1.5 kB
8
Indexable
#include <stdio.h>
char A[50][50];
void B(int n, int m);
void C(int n);
int N,M;
int main(void){
int a=0;
scanf("%d %d",&N,&M);
for(int n=1;n<=N;n++){
scanf("%s",A[n]);
}
for(int m=0;m<M;m++){
A[N+1][m]='x';
}
for(int n=N;n>=1;n--){
for(int m=0;m<M;m++){
B(n,m);
}
}
for(int n=N;n>=1;n--){
a=0;
for(int m=0;m<M;m++){
if(A[n][m]=='x'){
a++;
}
}
if(a==M){
for(int m=0;m<M;m++){
A[n][m]='.';
}
}
}
for(int n=N;n>=1;n--){
C(n);
}
for(int n=1;n<=N;n++){
for(int m=0;m<M;m++){
printf("%c",A[n][m]);
}
printf("\n");
}
return 0;
}
void B(int n, int m){
if(A[n][m]=='o' && A[n+1][m]=='.'){
A[n][m]='.';
A[n+1][m]='o';
B(n+1,m);
}
else if(A[n][m]=='o' && A[n+1][m]=='x'){
A[n][m]='x';
}
}
void C(int n){
int b=0,c=0;
for(int m=0;m<M;m++){
if(A[n][m]=='x'){
b++;
}
if(A[n+1][m]=='.'){
c++;
}
}
if(b!=0 && c==M){
for(int m=0;m<M;m++){
A[n+1][m]=A[n][m];
}
for(int m=0;m<M;m++){
A[n][m]='.';
}
C(n+1);
}
}
Editor is loading...