Cod sursa(job #467272)

Utilizator tranbachhaiTran Bach Hai tranbachhai Data 28 iunie 2010 13:43:06
Problema Cadrane Scor 20
Compilator cpp Status done
Runda Stelele Informaticii 2010, clasele X-XII, Ziua 2 Marime 1.28 kb
#include<stdio.h>
#define NMAX 100010

struct POINT{int x;int y;}; 
POINT COOR,v[NMAX];
int n;

int main()
{
int i,j,q,pl1,max,cont;
	freopen("cadrane.in","r",stdin);
	freopen("cadrane.out","w",stdout);
	
	scanf("%d",&n);
	for (i=1;i<=n;++i)
		scanf("%d%d",&v[i].x,&v[i].y);
	max=-1;
	if (n<=127){
	for (i=1;i<=n;++i){
		pl1=100010;
		for (j=1;j<=n;++j){
					cont=0;
					COOR.x=v[i].x;COOR.y=v[j].y;
					for (q=1;q<=n;++q)
						if ((v[q].x>=COOR.x&&v[q].y>=COOR.y)||(v[q].x<=COOR.x &&v[q].y<=COOR.y))
						++cont;
					if (cont<pl1)
						pl1=cont;
		}
		if(pl1>max)
				max=pl1;
		}
	}
	else {
		int poz=-1;
		for (i=1;i<=n;++i){
		pl1=100010;
					cont=0;
					COOR.x=v[i].x;COOR.y=v[i].y;
					for (q=1;q<=n;++q)
						if ((v[q].x>=COOR.x&&v[q].y>=COOR.y)||(v[q].x<=COOR.x &&v[q].y<=COOR.y))
						++cont;
					if (cont<pl1)
						pl1=cont;
		if(pl1>max){
				poz=i;
				max=pl1;
		}
		}
		max=-1;
		for (i=poz;i<=poz;++i){
		pl1=100010;
		for (j=1;j<=n;++j){
					cont=0;
					COOR.x=v[i].x;COOR.y=v[j].y;
					for (q=1;q<=n;++q)
						if ((v[q].x>=COOR.x&&v[q].y>=COOR.y)||(v[q].x<=COOR.x &&v[q].y<=COOR.y))
						++cont;
					if (cont<pl1)
						pl1=cont;
		}
		if(pl1>max)
				max=pl1;
		}
	}
	printf("%d",max);
	
	return 0;
}