Pagini recente » Cod sursa (job #146406) | Cod sursa (job #3127055) | Cod sursa (job #1071546) | Cod sursa (job #2212988) | Cod sursa (job #2665724)
#include <bits/stdc++.h>
std::ifstream fin("reuniune.in");
std::ofstream fout("reuniune.out");
long long comb[55][55];
long long dp[55][55];
struct Dreptunghi{
long long x1, y1;
long long x2, y2;
}a[4];
Dreptunghi intersectie (Dreptunghi p, Dreptunghi k){
long long x1, y1, x2, y2;
x1 = std::max(p.x1, k.x1);
y1 = std::max(p.y1, k.y1);
x2 = std::min(p.x2, k.x2);
y2 = std::min(p.y2, k.y2);
if(x1 > x2 or y1 > y2){
x1 = x2 = 0;
y1 = y2 = 0;
}
return {x1, y1, x2, y2};
}
long long calculeaza(Dreptunghi p){
long long arie=0;
arie = (p.x2-p.x1) * (p.y2-p.y1);
return arie;
}
long long calculeaza_perimetru(Dreptunghi p){
long long perimetru=0;
perimetru = 2 * (p.x2-p.x1) + 2*(p.y2-p.y1);
return perimetru;
}
int main(){
for(int i=1; i<=3; i++){
fin >> a[i].x1 >> a[i].y1;
fin >> a[i].x2 >> a[i].y2;
}
//Dreptunghi aux = intersectie(a[1], a[2]);
//fout << aux.x1 << ' ' << aux.y1 << '\n' << aux.x2 << ' ' << aux.y2;
long long arie=0;
long long perimetru = 0;
for(int i=1; i<=3; i++){
arie += calculeaza(a[i]);
perimetru += calculeaza_perimetru(a[i]);
}
for(int i=1; i<=3; i++){
for(int j=i+1; j<=3; j++){
Dreptunghi aux = intersectie(a[i], a[j]);
arie -= calculeaza(aux);
perimetru -= calculeaza_perimetru(aux);
}
}
Dreptunghi aux = intersectie(a[1], a[2]);
aux = intersectie(aux, a[3]);
arie += calculeaza(aux);
perimetru += calculeaza_perimetru(aux);
fout << arie << ' ' << perimetru << '\n';
return 0;
}