Cod sursa(job #1310915)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 7 ianuarie 2015 14:42:25
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <fstream>
#include <cmath>

using namespace std;
ifstream f("harta5.in");
ofstream g("harta5.out");
long int a[1503][1503],i,j,i1,d,i2,j2,n,m,k,p,l[1503],c[1503],pozmax,maxim,nr;
int main()
{   f>>p;
    f>>n>>m>>k;
    if(p==1)
    {   for(j=1;j<=k;j++)
        {f>>i1>>d>>i2>>j2;
            l[j]=abs(i2-i1)+1;
            c[j]=abs(j2-d)+1;
            if(l[j]==c[j] && l[j]>maxim) maxim=l[j],pozmax=j;}
        g<<l[pozmax] * c[pozmax]<<" ";
        for(j=1;j<=k;j++)
        {
            if((l[j]<=l[pozmax]-2 && c[j]<=c[pozmax]-2)) nr++;
        }
        g<<nr;
    }
    if(p==2)
    {   for(j=1;j<=k;j++)
        {f>>i1>>d>>i2>>j2;c[d]=1,c[j2]=1;l[i1]=1,l[i2]=1;
        for(i=i1;i<=i2;i++)
            a[i][d]=1,a[i][j2]=1,l[i]=1;
        for(i=d;i<=j2;i++)
            a[i1][i]=1,a[i2][i]=1,c[i]=1;}
        for(i=1;i<=n;i++)
        {   if(l[i]) nr=0;
            else if(!l[i] && !nr) nr=1,l[i]=1;
        }
        nr=0;
        for(i=1;i<=m;i++)
        {
            if(c[i]) nr=0;
            else if(!c[i] && !nr) nr=1,c[i]=1;
        }
        for(i=1;i<=n;i++)
            if(l[i])
        {for(j=1;j<=m;j++)
            if(c[j])g<<a[i][j]<<' ';g<<'\n';}
    }
    f.close();g.close();
}