#include #include #include #include using namespace std; typedef struct rect { int left,top,right,bottom; rect() { left = top = right = bottom = 0; }; }; map rects; map ::iterator kit; int povrsina(rect x) { return (x.right - x.left + 1) * (x.bottom - x.top + 1); } int main() { int r,s; cin >> r >> s; char mapa[r][s+1]; for (int i = 0; i < r ; i++) { cin >> mapa[i]; mapa[i][s] = 0; } for (int i = 0; i < r ; i++) { for (int j = 0; j < s; j++) { char k = mapa[i][j]; if (k!='.') { if (rects.count(k) > 0) { rects[k].bottom = i; rects[k].right = j; } else { rects[k].top = i; rects[k].left = j; } } } } int ukupno = 0, p; for (kit = rects.begin(); kit != rects.end(); kit++) { rect x = kit->second; p = povrsina(x); printf("%c : (%d,%d) - (%d,%d) P = %d\n",kit->first, x.top+1,x.left+1,x.bottom+1,x.right+1,p); for (int i = x.top; i <= x.bottom; i++) { for (int j = x.left; j <= x.right; j++) { if (mapa[i][j]!='*') ukupno++; mapa[i][j] = '*'; } } } cout << "Ukupna povrsina: " << ukupno << endl; return 0; }