Cod sursa(job #1826901)

Utilizator GabiTulbaGabi Tulba-Lecu GabiTulba Data 11 decembrie 2016 01:24:43
Problema Reuniune Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <cstring>
#include <cstdio>
#include <algorithm>
#define MaxN 105
#define INF 2140000000
using namespace std;
  
FILE *IN,*OUT;

int x11,x12,x21,x22,x31,x32,y11,y12,y21,y22,y31,y32;
long long sum=0,per=0;
int main()
{
    IN=fopen("reuniune.in","r");
    OUT=fopen("reuniune.out","w");

	fscanf(IN,"%d%d%d%d%d%d%d%d%d%d%d%d",&x11,&y11,&x12,&y12,&x21,&y21,&x22,&y22,&x31,&y31,&x32,&y32);
	sum=(1LL*(x12-x11)*(y12-y11)+1LL*(x22-x21)*(y22-y21)+1LL*(x32-x31)*(y32-y31));
	sum+=max(0LL,1LL*(min(x12,min(x22,x32))-max(x11,max(x21,x31)))*(min(y12,min(y22,y32))-max(y11,max(y21,y31))));
	sum-=max(0LL,(1LL*(min(x12,x22)-max(x11,x21))*(min(y12,y22)-max(y11,y21))));
	sum-=max(0LL,(1LL*(min(x12,x32)-max(x11,x31))*(min(y12,y32)-max(y11,y31))));
	sum-=max(0LL,(1LL*(min(x22,x32)-max(x21,x31))*(min(y22,y32)-max(y21,y31))));
	per=(x12-x11+y12-y11+x22-x21+y22-y21+x32-x31+y32-y31);
	if((min(x12,min(x22,x32))-max(x11,max(x21,x31)))>0&&(min(y12,min(y22,y32))-max(y11,max(y21,y31)))>0)per+=min(x12,min(x22,x32))-max(x11,max(x21,x31))+min(y12,min(y22,y32))-max(y11,max(y21,y31));
	if(min(x12,x22)-max(x11,x21)>0&&min(y12,y22)-max(y11,y21)>0)per-=min(x12,x22)-max(x11,x21)+min(y12,y22)-max(y11,y21);
	if(min(x12,x32)-max(x11,x31)>0&&min(y12,y32)-max(y11,y31)>0)per-=min(x12,x32)-max(x11,x31)+min(y12,y32)-max(y11,y31);
	if(min(x22,x32)-max(x21,x31)>0&&min(y22,y32)-max(y21,y31)>0)per-=min(x22,x32)-max(x21,x31)+min(y22,y32)-max(y21,y31);
	fprintf(OUT,"%lld %lld",sum,2*per);
    return 0;
}