Cod sursa(job #2407517)

Utilizator mihnea.anghelMihnea Anghel mihnea.anghel Data 16 aprilie 2019 22:17:19
Problema Taramul Nicaieri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <fstream>
#include <algorithm>
#define l first
#define c second
#include <bitset>

using namespace std;
ifstream f("harta.in");
ofstream g("harta.out");

pair <short int, short int> v[1009];
int n,m,k,i,q,lmax,cmax,is,iF, js,jf, sol, z, zy,j;
bitset <1501> a[1501];
bitset <1501> vx;
bitset <1501> vy;

int main()
{
	f>>q;
	if(q==1){
		f>>n>>m>>k;
		for(i=1;i<=k;i++){
			f>> is >> js >> iF >> jf;
			v[i].l = iF-is+1;
			v[i].c = jf-js+1;
		}
		sort (v+1, v+k+1);
		i=k; while (v[i].l!=v[i].c) i--; k=i;
		
		lmax=v[k].l-2; cmax=v[k].c-2;
		for(i=1; i < k; i++)
			if( v[i].l <= lmax && v[i].c <= cmax) 
				sol++;
		g<<(lmax+2)*(cmax+2)<<" "<<sol;
		return 0;
	}
	
	f>>n>>m>>k;
	
	for (i=1; i <= k ; i++){
		f>>is>>js>>iF>>jf;
		for(j=is; j<=iF; j++) a[j][js]=a[j][jf]=1, vx[j]=1;
		for(j=js; j<=jf; j++) a[is][j]=a[iF][j]=1, vy[j]=1;
	}
	z=0;
	for(i=1;i<=n;i++)
		if( vx[i] == 1 ) {
			zy=0; z=0;
			for(j=1; j <= m; j++)
				if( vy[j] == 1 )
					 zy=0, g<<a[i][j]<<" ";
				else if ( vy[j] == 0 && zy==0 )
					 zy++, g<<a[i][j]<<" ";
			g<<"\n";
		} else if( vx[i] == 0 && z == 0 ) {
			zy=0; z++;
			for(j=1; j <= m; j++)
				if( vy[j] == 1 )
					 zy=0, g<<a[i][j]<<" ";
				else if ( vy[j] == 0 && zy==0 )
					 zy++, g<<a[i][j]<<" ";
			g<<"\n";
		}
	return 0;
}