Cod sursa(job #3239251)
Utilizator | Data | 3 august 2024 16:30:28 | |
---|---|---|---|
Problema | Oz | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 5.57 kb |
#include <fstream>
using namespace std;
ifstream fin("raze.in");
ofstream fout("raze.out");
int v[200][200];
int w[200][200];
int main()
{
int t, n, m, nrob, nrli, maxim, cnt, nr, ii, jj;
bool ok;
fin >> t;
for(int q=1; q<=t; q++)
{
fin >> n >> m;
nrob = 0; nrli = 0; maxim = 0; cnt = 0;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
fin >> v[i][j];
if(v[i][j]==1&&i>1&&i<n&&j>1&&j<m)
nrob++;
else if(i>1&&i<n&&j>1&&j<m)
nrli++;
}
}
if(nrob<nrli)
{
for(int i=2; i<n; i++)
{
for(int j=2; j<m; j++)
{
w[i][j] = 4;
}
}
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
if(v[i][j]==1)
{
ii = i;
jj = j;
while(ii>1&&jj>1)
{
ii--;
jj--;
if(v[ii][jj]==1)
break;
w[ii][jj]--;
}
ii = i;
jj = j;
while(ii>1&&jj<m)
{
ii--;
jj++;
if(v[ii][jj]==1)
break;
w[ii][jj]--;
}
ii = i;
jj = j;
while(ii<n&&jj>1)
{
ii++;
jj--;
if(v[ii][jj]==1)
break;
w[ii][jj]--;
}
ii = i;
jj = j;
while(ii<n&&jj<m)
{
ii++;
jj++;
if(v[ii][jj]==1)
break;
w[ii][jj]--;
}
}
}
}
for(int i=2; i<n; i++)
{
for(int j=2; j<m; j++)
{
if(v[i][j]==0)
{
if(w[i][j]>maxim)
{
maxim = w[i][j];
cnt = 1;
}
else if(w[i][j]==maxim)
{
cnt++;
}
}
}
}
fout << maxim << " " << cnt << "\n";
}
else
{
for(int i=2; i<n; i++)
{
for(int j=2; j<m; j++)
{
if(v[i][j]==0)
{
nr = 0;
ii = i; jj = j; ok = 1;
while(ii>1&&jj>1)
{
ii--;
jj--;
if(v[ii][jj]==1)
{
ok=0;
break;
}
}
if(ok==1)
nr++;
ii = i; jj = j; ok = 1;
while(ii>1&&jj<m)
{
ii--;
jj++;
if(v[ii][jj]==1)
{
ok=0;
break;
}
}
if(ok==1)
nr++;
ii = i; jj = j; ok = 1;
while(ii<n&&jj>1)
{
ii++;
jj--;
if(v[ii][jj]==1)
{
ok=0;
break;
}
}
if(ok==1)
nr++;
ii = i; jj = j; ok = 1;
while(ii<n&&jj<m)
{
ii++;
jj++;
if(v[ii][jj]==1)
{
ok=0;
break;
}
}
if(ok==1)
nr++;
if(nr>maxim)
{
maxim = nr;
cnt = 1;
}
else if(nr==maxim)
{
cnt++;
}
}
}
}
fout << maxim << " " << cnt << "\n";
}
}
return 0;
}