#include #include #include #include int main ( ) { std::vector> snow; std::vector> dot_index; int rows, cols, num; std::cin >> rows >> cols >> num; char ch; snow.resize(cols); dot_index.reserve(cols); for ( int row = 0 ; row < rows ; row ++ ) { for ( int col = 0 ; col < cols ; col ++ ) { std::cin >> ch; if (ch == '.') { dot_index[col].push_back(row); } snow[col].push_back(ch); } } for (size_t i = 0; i < cols; i++) { std::reverse(dot_index[i].begin(), dot_index[i].end()); for (auto & index : dot_index[i]) { index = rows - 1 - index; } } // for ( int col = 0 ; col < cols ; col ++ ) { // for ( int row = 0 ; row < dot_index[col].size() ; row ++ ) { // std::cout << dot_index[col][row] << " "; // } // std::cout << std::endl; // } int time; for ( int i = 0 ; i < num ; i ++ ) { std::cin >> time; size_t sum = 0; // std::cout << "time: " << time << std::endl; for ( int col = 0 ; col < cols ; col ++ ) { if ( time >= dot_index[col].size() ) { sum += rows - dot_index[col].size(); // std::cout << "rd " << rows - dot_index[col].size() << std::endl; } else { sum += dot_index[col][time] - time; // std::cout << "ba " << dot_index[col][time] - time << std::endl; } // std::cout << " COL: " << col << std::endl; // std::cout << " SUM: " << sum << std::endl; } std::cout << sum << std::endl; } // // for ( int col = 0 ; col < cols ; col ++ ) { // // for ( int row = 0 ; row < rows ; row ++ ) { // // } // // } // std::map cache; // std::vector nums; // std::vector numsOrdered; // for ( int i = 0 ; i < num ; i ++ ) { // int time; // std::cin >> time; // nums.push_back(time); // numsOrdered.push_back(time); // } // std::sort(numsOrdered.begin(), numsOrdered.end()); // int maxtime; // if ( numsOrdered[numsOrdered.size() - 1] >= rows ) { // maxtime = rows; // } else { // maxtime = numsOrdered[numsOrdered.size() - 1]; // } // std::cout << "MTime: " << maxtime << std::endl; // size_t sum = 0; // for (size_t i = 0; i < snow.size(); i++){ // size_t counter = 0; // int dot_counter = maxtime; // // std::cout << "time: " << time << std::endl; // for (int level = rows - 1 ; level >= 0; level--) // { // // std::cout << " Level: " << level<< std::endl; // // std::cout << " dot_counter: " << dot_counter << std::endl; // // std::cout << " prvek: " << snow[i][level] << std::endl; // if ( dot_counter < 0 ) // { // // counter++; // break; // } // if (snow[i][level] == '.') // { // cache[maxtime - dot_counter] += counter; // dot_counter --; // } // else counter++; // // std::cout << " counter: " << counter<< std::endl; // } // // std::cout << "SUM: " << sum << std::endl; // } // for ( int i = 0 ; i < num ; i ++ ) { // if ( cache[nums[i]] && nums[i] < rows ){ // std::cout << cache[nums[i]] << std::endl; // continue; // } else if ( cache[nums[i]] && nums[i] >= rows ) { // std::cout << cache[rows] << std::endl; // continue; // } else { // std::cout << " sme kokoti " << std::endl; // } // // algoritmus na padanie // // size_t sum = 0; // // for (size_t i = 0; i < snow.size(); i++){ // // size_t counter = 0; // // int dot_counter = time; // // // std::cout << "time: " << time << std::endl; // // for (int level = rows - 1 ; level >= 0; level--) // // { // // // std::cout << " Level: " << level<< std::endl; // // // std::cout << " dot_counter: " << dot_counter << std::endl; // // // std::cout << " prvek: " << snow[i][level] << std::endl; // // if ( dot_counter < 0 ) // // { // // // counter++; // // break; // // } // // if (snow[i][level] == '.') dot_counter --; // // else counter++; // // // std::cout << " counter: " << counter<< std::endl; // // } // // sum += counter; // // // std::cout << "SUM: " << sum << std::endl; // // } // // cache[time] = sum; // // std::cout << sum << std::endl; // } return 0; }