Cod sursa(job #2013206)

Utilizator stefzahZaharia Stefan Tudor stefzah Data 20 august 2017 19:47:04
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.77 kb
#include <fstream>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
int x0[3],y0[3],x1[3],y1[3];
int X0,Y0,X1,Y1,S,P;
int xx0,xx1,yy1,yy0,v1,v2;
void Comparare(int p1,int p2)
     {X0=max(x0[p1],x0[p2]);
      X1=min(x1[p1],x1[p2]);
      Y0=max(y0[p1],y0[p2]);
      Y1=min(y1[p1],y1[p2]);
      if(X1>X0&&Y1>Y0){S-=(X1-X0)*(Y1-Y0);
                       P-=(X1-X0+Y1-Y0)*2;
                       xx0=X0;
                       xx1=X1;
                       yy0=Y0;
                       yy1=Y1;
                       v1=p1;v2=p2;
                      }
     }
void Comparare2(int p1,int p2)
     {X0=max(x0[p1],x0[p2]);
      X1=min(x1[p1],x1[p2]);
      Y0=max(y0[p1],y0[p2]);
      Y1=min(y1[p1],y1[p2]);
      if(X1>X0&&Y1>Y0){S+=(X1-X0)*(Y1-Y0);
                       P+=(X1-X0+Y1-Y0)*2;
                       xx0=X0;
                       xx1=X1;
                       yy0=Y0;
                       yy1=Y1;
                       v1=p1;v2=p2;
                      }
     }

int main()
{fin>>x0[0]>>y0[0]>>x1[0]>>y1[0];
 fin>>x0[1]>>y0[1]>>x1[1]>>y1[1];
 fin>>x0[2]>>y0[2]>>x1[2]>>y1[2];
 S+=(x1[0]-x0[0])*(y1[0]-y0[0]);
 S+=(x1[1]-x0[1])*(y1[1]-y0[1]);
 S+=(x1[2]-x0[2])*(y1[2]-y0[2]);
 P+=(x1[0]-x0[0]+y1[0]-y0[0])*2;
 P+=(x1[1]-x0[1]+y1[1]-y0[1])*2;
 P+=(x1[2]-x0[2]+y1[2]-y0[2])*2;
 Comparare(0,1);
 Comparare(1,2);
 Comparare(2,0);
 if(v1==0&&v2==1){x0[0]=xx0;y0[0]=yy0;x1[0]=xx1;y1[0]=yy1;
                  Comparare2(0,2);
                 }
 else if(v1==1&&v2==2){x0[1]=xx0;y0[1]=yy0;x1[1]=xx1;y1[1]=yy1;
                  Comparare2(1,0);
                 }
 else if(v1==2&&v2==0){x0[2]=xx0;y0[2]=yy0;x1[2]=xx1;y1[2]=yy1;
                  Comparare2(2,1);
                 }
 fout<<S<<" "<<P;
}