Pagini recente » Cod sursa (job #1825804) | Cod sursa (job #1431031) | Cod sursa (job #3123552) | Cod sursa (job #1949629) | Cod sursa (job #892193)
Cod sursa(job #892193)
#include <fstream>
using namespace std;
struct oriz
{
int y;
int x1,x2;
}o[1002];
int c_o,c_v;
struct vert
{
int x;
int y1,y2;
}v[1002];
ifstream in("segmente.in");
ofstream out("segmente.out");
int D[1002][1002];
inline int abs(const int &a)
{
return a < 0 ? -a : a;
}
inline int min(const int &a,const int &b)
{
return a < b ? a : b;
}
inline int max(const int &a,const int &b)
{
return a > b ? a : b;
}
int main()
{
int n;
int x1,y1;
int x2,y2,i,j,k;
in >> n;
for(i=1;i<=n;++i)
{
in >> x1 >> y1;
in >> x2 >> y2;
if(y1 == y2)
{
o[++c_o].y = y1;
o[c_o].x1 = x1;
o[c_o].x2 = x2;
}
else
{
v[++c_v].y1 = y1;
v[c_v].y2 = y2;
v[c_v].x = x1;
}
}
int a,b;
int P,Q;
for(i=1;i<=c_o;++i)
{
for(j=1;j<=c_v;++j)
{
P = min(abs(o[j].x2 - v[j].x),abs(o[j].x1 - v[j].x));
if(v[j].x >= o[i].x1 && v[j].x <= o[i].x2)
P = 0;
Q = min(abs(o[j].y - v[j].y1),abs(o[j].y - v[j].y2));
if(o[j].y >= v[j].y1 && o[j].y <= v[j].y2)
Q = 0;
D[i][j] = max(P,Q);
}
}
int show = 1<<30;
int min1 = 1 << 30,min2 = 1 << 30;
if(c_o < c_v)
{
for(i = 1;i <= c_o; ++ i)
for(j = i + 1;j <= c_o ; ++ j)
{
min1 = 1<<30;
min2 = 1<<30;
for(k=1;k<= c_v;++ k)
{
P = max(D[i][k],D[j][k]);
if(P < min1)
{
if(min1<min2)
min2=min1;
min1=P;
}
else if(P < min2)
min2 = P;
}
show = min(show,min2);
}
}
else
{
for(i=1;i<=c_v;++i)
for(j=i+1;j<=c_v;++j)
{
min1 = 1<<30;
min2 = 1<<30;
for(k=1;k<=c_o;++k)
{
P = max(D[k][i],D[k][j]);
if(P < min1)
{
if(min1<min2)
min2=min1;
min1=P;
}
else if(P < min2)
min2 = P;
}
show = min(show,min2);
}
}
out << show << "\n";
}