Pagini recente » Cod sursa (job #2040622) | Cod sursa (job #198936) | Cod sursa (job #546615) | Cod sursa (job #2734342) | Cod sursa (job #503748)
Cod sursa(job #503748)
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE*f=fopen("reuniune.in","r");
FILE*g=fopen("reuniune.out","w");
int i,lin[20],col[20],L[20],C[20],k,p,k2,p2,A[20][20],d,S,j,P;
struct pct{
int x1; int y1; int x2; int y2;
} W[5];
int abs(int a){
if ( a < 0 )
return -a;
return a;
}
int main () {
for ( i = 1 ; i <= 3 ; ++i ){
fscanf(f,"%d %d %d %d",&W[i].x1,&W[i].y1,&W[i].x2,&W[i].y2);
lin[++k] = W[i].x1; lin[++k] = W[i].x2;
col[++p] = W[i].y1; col[++p] = W[i].y2;
}
sort(lin+1,lin+k+1); sort(col+1,col+k+1);
lin[0] = col[0] = -1<<29;
for ( i = 1 ; i <= k ; ++ i ){
if ( lin[i] != lin[i-1] )
L[++k2] = lin[i];
if ( col[i] != col[i-1] )
C[++p2] = col[i];
}
for ( i = 1 ; i < k2 ; ++i ){
for ( j = 1 ; j < p2; ++j ){
for ( d = 1 ; d <= 3 ; ++d ){
if ( L[i] >= W[d].x1 && L[i+1] <= W[d].x2 && C[j] >= W[d].y1 && C[j+1] <= W[d].y2 ){
A[i][j] = 1;
S += (abs( L[i+1] - L[i] )) * (abs(C[j+1] - C[j] ));
break;
}
}
}
}
for ( i = 1 ; i < k2 ; ++i ){
for ( j = 1 ; j < p2; ++j ){
if ( A[i][j] && !A[i-1][j] )
P += L[i+1] - L[i];
if ( A[i][j] && !A[i][j+1] )
P += C[j+1] - C[j];
if ( A[i][j] && !A[i-1][j] )
P += C[i+1] - C[i];
if ( A[i][j] && !A[i][j-1] )
P += L[i+1] - L[i];
}
}
/*
for ( i = 1 ; i < k2 ; ++i ){
for ( j = 1 ; j < p2; ++j )
fprintf(g,"%d ",A[i][j]);
fprintf(g,"\n");
}
*/
fprintf(g,"%d %d\n",S,P);
fclose(f);
fclose(g);
return 0;
}