Pagini recente » Cod sursa (job #2843349) | Cod sursa (job #193853) | Borderou de evaluare (job #1620512) | Cod sursa (job #1877145) | Cod sursa (job #2436706)
#include <iostream>
#include <algorithm>
#include <vector>
#include <deque>
#include <map>
#include <cstring>
#include <stack>
#include <cmath>
#include <queue>
#include <fstream>
using namespace std;
const int ciur_dim = 1000000;
ifstream in("reuniune.in");
ofstream out("reuniune.out");
bool ok = 0;
long long int v[5][5],A1,A2,A3;
long long int sol = 0,perimetru1,P1,P2,P3;
long long int intersect(int i,int j)
{
long long int x1 = max(v[i][1] , v[j][1]);
long long int y1 = max(v[i][2] , v[j][2]);
long long int x2 = min(v[i][3] , v[j][3]);
long long int y2 = min(v[i][4] , v[j][4]);
if (ok == 0)
{
v[4][1] = x1;
v[4][2] = y1;
v[4][3] = x2;
v[4][4] = y2;
ok = 1;
}
return abs(x2 - x1) * abs(y2 - y1);
}
long long int Perimetru(int i,int j)
{
long long int x1 = max(v[i][1] , v[j][1]);
long long int y1 = max(v[i][2] , v[j][2]);
long long int x2 = min(v[i][3] , v[j][3]);
long long int y2 = min(v[i][4] , v[j][4]);
return 2*abs(x2 - x1) + 2*abs(y2 - y1);
}
int main()
{
int i,j;
for (i=1; i<=3; i++)
{
for (j=1; j<=4; j++)
{
in >> v[i][j];
}
}
A1 = abs(v[1][1] - v[1][3]) * abs(v[1][2] - v[1][4]);
A2 = abs(v[2][1] - v[2][3]) * abs(v[2][2] - v[2][4]);
A3 = abs(v[3][1] - v[3][3]) * abs(v[3][2] - v[3][4]);
P1 = 2*abs(v[1][1] - v[1][3]) + 2*abs(v[1][2] - v[1][4]);
P2 = 2*abs(v[2][1] - v[2][3]) + 2*abs(v[2][2] - v[2][4]);
P3 = 2*abs(v[3][1] - v[3][3]) + 2*abs(v[3][2] - v[3][4]);
sol = A1 + A2 + A3 - intersect(1,2) - intersect(1,3) - intersect(2,3) + intersect(3,4);
out << sol << " ";
perimetru1 = P1 + P2 + P3 - Perimetru(1,2) - Perimetru(2,3) - Perimetru(1,3) + Perimetru(3,4);
out << perimetru1;
return 0;
}