Pagini recente » Cod sursa (job #136446) | Statistici Hugo Vicky (HugoVicky) | Cod sursa (job #834233) | Cod sursa (job #2369967) | Cod sursa (job #2010065)
#include <fstream>
#include <iostream>
#include <set>
using namespace std;
struct segment {
int x1;
int y1;
int x2;
int y2;
};
segment v[4];
set<int> sx, sy;
int X[10], Y[10], A[10][10];
int n, m, aria, perimetru;
int main () {
ifstream fin ("reuniune.in");
ofstream fout("reuniune.out");
for (int i=1;i<=3;i++) {
fin>>v[i].x1>>v[i].y1>>v[i].x2>>v[i].y2;
if (v[i].x1 > v[i].x2) {
swap(v[i].x1, v[i].x2);
}
if (v[i].y1 > v[i].y2) {
swap(v[i].y1, v[i].y2);
}
sx.insert(v[i].x1);
sx.insert(v[i].x2);
sy.insert(v[i].y1);
sy.insert(v[i].y2);
}
for (set<int>::iterator itx = sx.begin(); itx != sx.end(); itx++) {
X[++n] = *itx;
}
for (set<int>::iterator ity = sy.begin(); ity != sy.end(); ity++) {
Y[++m] = *ity;
}
for (int i=1;i<n;i++)
for (int j=1;j<m;j++)
for (int k=1;k<=3;k++)
if (v[k].x1 <= X[i] && X[i+1] <= v[k].x2 && v[k].y1 <= Y[j] && Y[j+1] <= v[k].y2)
A[i][j] = 1;
for (int i=1;i<n;i++)
for (int j=1;j<m;j++)
if (A[i][j] == 1) {
aria += (X[i+1]-X[i]) * (Y[j+1]-Y[j]);
if (A[i-1][j] == 0)
perimetru += (Y[j+1] - Y[j]);
//perimetru += (X[i+1] - X[i]);
if (A[i+1][j] == 0)
perimetru += (Y[j+1] - Y[j]);
//perimetru += (X[i+1] - X[i]);
if (A[i][j-1] == 0)
perimetru += (X[i+1] - X[i]);
//perimetru += (Y[j+1] - Y[j]);
if (A[i][j+1] == 0)
perimetru += (X[i+1] - X[i]);
//perimetru += (Y[j+1] - Y[j]);
}
/*
for (int j=1;j<m;j++) {
for (int i=1;i<n;i++)
cout<<A[i][j]<<" ";
cout<<"\n";
}
*/
fout<<aria<<" "<<perimetru;
return 0;
}