Pagini recente » Cod sursa (job #3222282) | Cod sursa (job #606991) | Cod sursa (job #1013237) | Cod sursa (job #2083188) | Cod sursa (job #1230834)
#include <fstream>
#define DIM 55
#define infile "boundingbox.in"
#define outfile "boundingbox.out"
using namespace std;
ifstream f(infile);
ofstream g(outfile);
int A[DIM][DIM], L[DIM][DIM], C[DIM][DIM];
char ch[DIM];
int t, m, n;
int main () {
f >> t;
long long X = 0, Y = 1;
while(t--) {
f >> m >> n;
X = 0; Y = 1;
f.get();
for (int i=1; i<=m; ++i) {
f.get(ch,55);
f.get();
for (int j=1; j<=n; ++j) {
A[i][j] = ch[j-1]-'0';
L[i][j] = C[i][j] = A[i][j];
L[i][j] += L[i][j-1];
C[i][j] += C[i-1][j];
}
}
for (int i=1; i<=m; ++i)
for (int j=1; j<=n; ++j)
for (int ii=i; ii<=m; ++ii)
for (int jj=j; jj<=n; ++jj) {
if (L[i][jj] - L[i][j-1] > 0 && L[ii][jj] - L[ii][j-1] > 0) {
if(C[ii][j] - C[i-1][j] > 0 && C[ii][jj] - C[i-1][jj] > 0)
Y++, X += 1LL*(ii-i+1)*(jj-j+1);
}
}
long long XX=X, YY=Y;
while(YY!=0) {
long long r = XX%YY;
XX = YY;
YY = r;
}
X /= XX;
Y /= XX;
g << X <<"/" << Y << "\n";
}
return 0;
}