Cod sursa(job #596688)

Utilizator matei_cChristescu Matei matei_c Data 18 iunie 2011 14:13:32
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

struct cladiri
{
	int x,y,Lx,Ly,H,m;
};	
cladiri V[101];
int n,lg[101];
bool comparare(cladiri x,cladiri y)
{
	if(x.x<y.x)
		return true;
	else
		if(x.x == y.x)
			if(x.y < y.y)
				return true;
	return false;
}

int main()
{
	int i,j;
	freopen("macheta.in","r",stdin);
	freopen("macheta.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d%d%d%d%d",&V[i].x,&V[i].y,&V[i].Lx,&V[i].Ly,&V[i].H);
		V[i].m = i;
		lg[i]=V[i].Lx;
	}
	sort(&V[1],&V[n+1],comparare);
	//for(i=1;i<=n;i++)
	//	printf("%d %d %d %d %d %d\n",V[i].x,V[i].y,V[i].Lx,V[i].Ly,V[i].H,V[i].m);	
	for(i=2;i<=n;i++)
	{
		for(j=1;j<=i-1;j++)
		{
			if(V[i].y != V[j].y && V[i].x >= V[j].x && V[i].H <= V[j].H)
			{
				if(V[i].x==V[j].y) lg[ V[i].m ]-=V[j].Lx;
				if(V[i].x<V[j].x) lg[ V[i].m ]-=V[i].x+V[i].Lx-V[j].x;
				if(V[i].x>V[j].x) lg[ V[i].m ]-=V[j].x+V[j].Lx-V[i].x;
			}	
		}	
	}	
	for(i=1;i<=n;i++)
		if(lg[i]>=1)
			printf("%d ",i);
	printf("\n");	
	printf("\n");	
	return 0;
}