Cod sursa(job #3357837)

Utilizator Alexandra282Calin Maria Alexandra Alexandra282 Data 13 iunie 2026 15:45:30
Problema Reuniune Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
long long d[4][5],s,p;
int pery(int d1, int d2)
{
      if(d[d1][2]>=d[d2][2]) swap(d1,d2);
          if(d[d1][4]<=d[d2][2]) return 0;
          return -d[d2][2]+min(d[d1][4],d[d2][4]);
}
int perx(int d1, int d2)
{
    if(d[d1][1]>=d[d2][1]) swap(d1,d2);
          if(d[d1][3]<=d[d2][1]) return 0;
          return -d[d2][1]+min(d[d1][3],d[d2][3]);
}

int main()
{
    for(int i=1;i<=3;i++)
    {
        for(int j=1;j<=4;j++)
            f>>d[i][j];
        s+=(d[i][3]-d[i][1])*(d[i][4]-d[i][2]);
        p+=2*((d[i][3]-d[i][1])+(d[i][4]-d[i][2]));
    }
    s-=pery(1,2)*perx(1,2);
    p-=(pery(1,2)+perx(1,2))*2;
    s-=pery(2,3)*perx(2,3);
    p-=(pery(2,3)+perx(2,3))*2;
    s-=pery(1,3)*perx(1,3);
    p-=(pery(1,3)+perx(1,3))*2;
    long long m1,m2,x;
    m1=max(max(d[1][1],d[2][1]),d[3][1]);
    m2=min(min(d[1][3],d[2][3]),d[3][3]);
    if(m1<m2)
    {
        x=m2-m1;
        m1=max(max(d[1][2],d[2][2]),d[3][2]);
        m2=min(min(d[1][4],d[2][4]),d[3][4]);
        if(m1<m2)
            {s+=(m2-m1)*x;
             p+=2*(m2-m1)+2*x;
            }
    }
    g<<s<<' '<<p;
    return 0;
}