#include int evaluate(int n, int m, char* snow[]){ int count = 0; for (int j = 0; j < m; ++j){ int i = n - 1; while ((snow[i][j] != '.') && (i >= 0)){ ++count; --i; } } return count; } void move(int n, int m, char* snow[]){ for (int i = n-2; i >= 0; --i){ for (int j = 0; j < m; ++j){ if (snow[i+1][j] == '.'){ snow[i+1][j] = snow[i][j]; snow[i][j] = '.'; } } } } int main() { int n, m, q, measure_id = 0, time = 0; std::cin >> n; std::cin >> m; std::cin >> q; int measure[q]; char* snow[n]; for(int i = 0; i < n; i++) { snow[i] = static_cast(malloc(m * sizeof(char))); } for (int i = 0; i < n; ++i){ for (int j = 0; j < m; ++j){ std::cin >> snow[i][j]; } } for (int i = 0; i < q; ++i){ std::cin >> measure[i]; } while (time < n){ if (time == measure[measure_id]){ std::cout << evaluate(n, m, snow) << "\n"; ++measure_id; } move(n, m, snow); ++time; } int last = evaluate(n, m, snow); while (measure_id != q){ std::cout << last << "\n"; ++measure_id; } return 0; }