Cod sursa(job #931322)

Utilizator rudarelLup Ionut rudarel Data 28 martie 2013 10:11:44
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.45 kb
#include<stdio.h>
long double x0[4],y0[4],x1[4],y1[4],a[7],b[7],aux,s[7][7],aria,per;
int i,lx,ly,ok,j,k;
int main()
{
    FILE *f,*g;
    f=fopen("reuniune.in","r");
    g=fopen("reuniune.out","w");
    for(i=1;i<=3;i++)
    { fscanf(f,"%Lf%Lf%Lf%Lf",&x0[i],&y0[i],&x1[i],&y1[i]);
      a[2*i-1]=x0[i];a[2*i]=x1[i];
      b[2*i-1]=y0[i];b[2*i]=y1[i];
    }
    lx=6;ly=6;
    ok=1;
    while(ok)
    {       ok=0;
        for(i=1;i<lx;i++)
        { if(a[i]==a[i+1]){a[i+1]=a[lx];lx--;ok=1;}
          else if(a[i]>a[i+1])
             {aux=a[i];a[i]=a[i+1];a[i+1]=aux;ok=1;}
        }
    }
    ok=1;
    while(ok)
    {       ok=0;
        for(i=1;i<ly;i++)
        { if(b[i]==b[i+1]){b[i+1]=b[ly];ly--;ok=1;}
          else if(b[i]>b[i+1])
             {aux=b[i];b[i]=b[i+1];b[i+1]=aux;ok=1;}
        }
    }
    for(i=1;i<lx;i++)
    for(j=1;j<ly;j++)
    for(k=1;k<=3;k++)
    if(a[i]>=x0[k])
     if(a[i+1]<=x1[k])
      if(b[j]>=y0[k])
       if(b[j+1]<=y1[k])
        {s[i][j]=(a[i+1]-a[i])*(b[j+1]-b[j]);}
    for(i=1;i<lx;i++)
    for(j=1;j<ly;j++)
    aria+=s[i][j];
    for(i=0;i<=5;i++)
    for(j=0;j<=5;j++)
    { if(s[i][j]!=0) { if(s[i][j+1]==0) per=per+(a[i+1]-a[i]);
               if(s[i][j-1]==0) per=per+(a[i+1]-a[i]);
               if(s[i+1][j]==0) per=per+(b[j+1]-b[j]);
               if(s[i-1][j]==0) per=per+(b[j+1]-b[j]);}
    }
    fprintf(g,"%.0Lf %.0Lf\n",aria,per);
    fcloseall();
    return 0;
}