Mai intai trebuie sa te autentifici.
Cod sursa(job #981569)
Utilizator | Data | 7 august 2013 15:45:16 | |
---|---|---|---|
Problema | Reuniune | Scor | 20 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.18 kb |
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
struct drep{int x1, y1, x2, y2;};
int supr, per; drep d[4];
int Arie(drep d)
{
return (d.x2 - d.x1) * (d.y2 - d.y1);
}
int Per(drep d)
{
return 2 * (d.x2 - d.x1 + d.y2 - d.y1);
}
drep Inter(drep d1, drep d2)
{
drep com ;
com.x1 = max(d1.x1, d2.x1);
com.y1 = max(d1.y1, d2.y1);
com.x2 = min(d1.x2, d2.x2);
com.y2 = min(d1.y2, d2.y2);
if(com.x1 > com.x2 || com.y2 < com.y1)
com.x1 = com.x2 = com.y1 = com.y2 = 0;
return com;
}
int main()
{
for(int i=1; i<=3; i++)
{
fin>>d[i].x1>>d[i].y1>>d[i].x2>>d[i].y2;
per += 2 * (d[i].x2 - d[i].x1 + d[i].y2 - d[i].y1);
supr += (d[i].x2 - d[i].x1) * (d[i].y2 - d[i].y1);
}
supr = supr - Arie(Inter(d[1], d[2])) - Arie(Inter(d[1], d[3])) - Arie(Inter(d[2], d[3])) + Arie(Inter(Inter(d[1], d[2]), d[3]));
per = per - Per(Inter(d[1], d[2])) - Per(Inter(d[1], d[3])) - Per(Inter(d[2], d[3])) + Per(Inter(Inter(d[1], d[2]), d[3]));
fout<<supr<<' '<<per;
return 0;
}