#include #include int main() { int N, M, Q; scanf("%d %d %d", &N, &M, &Q); char **m = (char**)malloc(N * sizeof(char*)); for (int i = 0; i < N; i++) { getchar(); m[i] = (char*)malloc(M * sizeof(char)); for (int j = 0; j < M; j++) { scanf("%c", &(m[i][j])); } } int *n = (int*)malloc(Q * sizeof(int)); int max = 0; for (int i = 0; i < Q; i++) { scanf("%d", &(n[i])); if (max < n[i]) { max = n[i]; } } int *times = (int*)malloc((max+1) * sizeof(int)); for (int time = 0; time <= max; time++) { for (int l = 0; l < Q; l++) { if (time == n[l]) { int result = 0; for (int i = 0; i < M; i++) { if ( m[N-1][i] == '*' ) { result++; for (int j = N-2; j >= 0; j--) { if (m[j][i] == '*' ) { result++; } else { break; } } } } times[time] = result; break; } } for (int i = 0; i < M; i++) { for (int j = N-2; j >= 0; j--) { if (m[j][i] == '*' && m[j+1][i] == '.') { m[j+1][i] = '*'; m[j][i] = '.'; } } } // printf("\n"); // for (int i = 0; i < N; i++) { // for (int j = 0; j < M; j++) { // printf("%c", (m[i][j])); // } // printf("\n"); // } // printf("\ntime:%d\n", time); } for (int i = 0; i < Q-1; i++) { printf("%d\n", times[n[i]]); } printf("%d", times[n[Q-1]]); free(n); for (int i = 0; i < N; i++) { free(m[i]); } free(m); free(times); return 0; }