Cod sursa(job #3129432)

Utilizator sandu_stefanSandu Stefan sandu_stefan Data 14 mai 2023 16:02:16
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
long long x[3][5],y[3][5],s[5],p[5];
void citire(int a){
    f>>x[1][a]>>y[1][a]>>x[2][a]>>y[2][a];
}
void intersectie(int a,int b,int c){
    x[1][4]=max(x[1][a],x[1][b]);
    y[1][4]=max(y[1][a],y[1][b]);
    x[2][4]=min(x[2][a],x[2][b]);
    y[2][4]=min(y[2][a],y[2][b]);
    if (x[1][4]<=x[2][4] && y[1][4]<=y[2][4]){
        s[c]=(x[2][4]-x[1][4])*(y[2][4]-y[1][4]);
        p[c]=2*((x[2][4]-x[1][4])+(y[2][4]-y[1][4]));
    }
    else{
        s[c]=p[c]=0;
    }
}
inline long long arie(int a){
    return (x[2][a]-x[1][a])*(y[2][a]-y[1][a]);
}
inline long long perimetru(int a){
    return 2*((x[2][a]-x[1][a])+(y[2][a]-y[1][a]));
}
int main()
{
    citire(1);
    citire(2);
    citire(3);
    intersectie(1,2,1);
    intersectie(3,4,4);
    intersectie(1,3,2);
    intersectie(2,3,3);
    g<<arie(1)+arie(2)+arie(3)-s[1]-s[2]-s[3]+s[4]<<' ';
    g<<perimetru(1)+perimetru(2)+perimetru(3)-p[1]-p[2]-p[3]+p[4];
    f.close();
    g.close();
    return 0;
}