Cod sursa(job #2451208)

Utilizator AnduebossAlexandru Ariton Andueboss Data 26 august 2019 10:43:02
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.49 kb
//
//  main.cpp
//  light2
//
//  Created by Andu Andu on 26/08/2019.
//  Copyright © 2019 Andu Andu. All rights reserved.
//

#include <iostream>
#include <fstream>

using namespace std;

ifstream f ("reuniune.in");
ofstream g ("reuniune.out");

int x1, x2, y2, y1;

struct dreptunghi
{
    long long x,y,x2,y2;
    long long arie() {
        return 1LL * (x2 - x) * (y2 - y);
    }
    long long per() {
        return ((x2 - x) + (y2 - y)) * 2LL;
    }
};

bool isOK(long long x, long long y, dreptunghi a) {
    return x >= a.x && x <= a.x2 && y >= a.y && y <= a.y2;
}

dreptunghi dr1, dr2, dr3, dr12, dr13, dr23, dr123;

dreptunghi seIntersecteaza(dreptunghi a, dreptunghi b) {
    dreptunghi dr = {0, 0, 0, 0};
    int maxx1, maxx2, min1, min2;
    maxx1 = max(a.x, b.x);
    maxx2 = max(a.y, b.y);
    min1 = min(a.x2, b.x2);
    min2 = min(a.y2, b.y2);
    if (maxx1 <= min1 && maxx2 <= min2)
    {
        dr = {maxx1, maxx2, min1, min2};
    }
    return dr;
}

int main() {
    f>>dr1.x>>dr1.y>>dr1.x2>>dr1.y2;
    f>>dr2.x>>dr2.y>>dr2.x2>>dr2.y2;
    f>>dr3.x>>dr3.y>>dr3.x2>>dr3.y2;
    dr12 = seIntersecteaza(dr1, dr2);
    dr123 = seIntersecteaza(dr12, dr3);
    dr23 = seIntersecteaza(dr2, dr3);
    dr13 = seIntersecteaza(dr1, dr3);
    long long arie = dr1.arie() + dr2.arie() + dr3.arie() - dr12.arie() - dr13.arie() - dr23.arie() + dr123.arie();
    long long perimetru = dr1.per() + dr2.per() + dr3.per() - dr12.per() - dr23.per() - dr13.per() + dr123.per();
    g<<arie<<" "<<perimetru;
    return 0;
}