Cod sursa(job #1762550)

Utilizator Dan_RadulescuRadulescu Dan Dan_Radulescu Data 23 septembrie 2016 18:48:05
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE *f1=fopen("reuniune.in","r");
FILE *f2=fopen("reuniune.out","w");
long long xp1[4],yp1[4],xp2[4],yp2[4],aries,perims,i;
long long arie(int i){
    return (yp2[i]-yp1[i])*(xp2[i]-xp1[i]);
}
long long perim(int i){
    return 2*(yp2[i]-yp1[i])+2*(xp2[i]-xp1[i]);
}
int intersectie(int i,int j){
    yp2[0]=min(yp2[i],yp2[j]);
    yp1[0]=max(yp1[i],yp1[j]);
    xp2[0]=min(xp2[i],xp2[j]);
    xp1[0]=max(xp1[i],xp1[j]);
    if (xp1[0]>xp2[0] || yp1[0]>yp2[0]) return 0;
    return 1;
}
int main(){
   for (i=1;i<=3;i++){
      fscanf(f1,"%lld%lld%lld%lld",&xp1[i],&yp1[i],&xp2[i],&yp2[i]);
      aries=aries+arie(i);
      perims=perims+perim(i);
   }
   aries=aries-intersectie(1,2)*arie(0);
   aries=aries-intersectie(1,3)*arie(0);
   aries=aries-intersectie(2,3)*arie(0);
   aries=aries+intersectie(0,1)*arie(0);
   perims=perims-intersectie(1,2)*perim(0);
   perims=perims-intersectie(1,3)*perim(0);
   perims=perims-intersectie(2,3)*perim(0);
   perims=perims+intersectie(0,1)*perim(0);
   fprintf(f2,"%lld %lld",aries,perims);
   fclose(f1);
   fclose(f2);
   return 0;
}