Cod sursa(job #1231082)

Utilizator robertstrecheStreche Robert robertstreche Data 19 septembrie 2014 14:58:25
Problema Boundingbox Scor 0
Compilator cpp Status done
Runda Infoarena Cup 2014 Marime 1.34 kb
#include <fstream>
#include <vector>

#define lmax 51
#define inf 100

using namespace std;

ifstream f("boundingbox.in");
ofstream g("boundingbox.out");

char c;

inline void solve()
{
    int i,j,n,m,nr=0,arie=0;
    int lma,lmi,cma,cmi;


    bool a[lmax][lmax];

    vector <pair<int,int> >v;

   f>>n>>m;

   for (i=1;i<=n;i++)
    for(j=1;j<=m;j++)
     {
         f>>c;

         a[i][j]=c-48;

        if (a[i][j])
         v.push_back(make_pair(i,j));
     }

   for (i=0;i<v.size();i++)
    {
        lma=-inf;
        cma=-inf;
        lmi=inf;
        cmi=inf;

        for (j=i;j<v.size();j++)
         {
           if (v[j].first<lmi)
            lmi=v[j].first;

           if (v[j].first>lma)
            lma=v[j].first;

           if (v[j].second<cmi)
            cmi=v[j].second;

           if (v[j].second>cma)
            cma=v[j].second;

        arie+=(lma-lmi+1)*(cma-cmi+1);
        nr++;
        }

   }

  if (arie && nr)
{
    int ariee=arie,nrr=nr;

   int r=arie%nr,rr;

   while (nr)
    {
        rr=arie%nr;
        arie=nr;
        nr=r;
        r=rr;

    }
    g<<ariee/arie<<"/"<<nrr/arie<<'\n';
}

   else
    g<<0<<"/"<<1<<'\n';
}

int main()
{
    int t;

    f>>t;

    for (int i=1;i<=t;i++)
     solve();

   f.close();
   g.close();
}