#include #include #include using namespace std; inline int get_real_val(int val, int idx, size_t len) { return val - (len-idx-1); } int bisect_right(vector& a, int x) { int lo = 0; int hi = a.size(); while (lo < hi) { int mid = (lo + hi) / 2; if (x < get_real_val(a[mid], mid, a.size())) { lo = mid + 1; } else { hi = mid; } } return a.size()-lo-1; } int main(void) { int N, M, Q; cin >> N >> M >> Q; vector> piles(M); for (int i =0; i < N; ++i) { //cin >> line; char chr; for (int j = 0; j < M; ++j) { scanf("%c", &chr); if (chr == '*') { piles[j].push_back(N-i-1); } } scanf("%c", &chr); } for (int i = 0; i < Q; ++i) { int time; cin >> time; int total_snowflakes = 0; for (int j = 0; j < M; ++j) { total_snowflakes += bisect_right(piles[j], time) + 1; } cout << total_snowflakes << endl; } }