#include #include #include #include std::map> zlata; int sno(int num, std::vector> snow){ if(zlata.find(num)!= zlata.end()){ int ret=0; for(auto i : zlata[num]){ ret+=i; } return ret; } if(num == 0){ auto snow_last = snow[snow.size() - 1]; int cnt = 0; for(size_t i = 0; i < snow_last.size(); i++){ if(snow_last[i]=='*') { zlata[0].push_back(1); cnt++; } else zlata[0].push_back(0); } return cnt; } else{ sno(num-1, snow); auto prevSnow = zlata[num-1]; for(size_t i = 0; i< prevSnow.size();i++){ int iter = 0; bool change = true; while(change){ change = false; size_t col = i; size_t row = snow.size() - (prevSnow[i]+iter+1) ; if(row < snow.size() && snow[row][col]=='*'){ change = true; iter++; } } zlata[num].push_back(prevSnow[i]+iter); } int ret=0; for(auto i : zlata[num]){ ret+=i; } return ret; } } int main() { int lines,cols,queer; std::cin >> lines; std::cin >> cols; std::cin >> queer; std::vector needs(queer); std::vector> snow(lines); char c; for(int i = 0; i < lines; i++){ for(int j = 0; j> c; snow[i].push_back(c); } } int x; for(int k = 0; k < queer; k++){ std::cin >> x; needs[k] = x; } for(int k = 0; k 0; k++){ // sno(needs[k], snow); // } return EXIT_SUCCESS; }