All pastes #59434 Raw Edit

Anonymous

public c v1 · immutable
#59434 ·published 2006-05-28 22:34 UTC
rendered paste body
#include <stdio.h>#include <stdlib.h>/*-------------------------------*/typedef struct LOLek {	int x;	int y;	int kto;	int nr;	}LOLek;/*-------------------------------*/LOLek tab[100000];int ilet;LOLek *wtab[100000];int ilewt;LOLek min;/*-------------------------------*/void mielimy(int od,int ile);int por(const void *p1,const void *p2);/*-------------------------------*/int main() {	int time,time2,i;	min.x=40000,min.y=40000;	scanf("%d",&time);	time2=time;i=0;	while(time2) {/*bastery kto=1*/		scanf("%d %d",&tab[i].x,&tab[i].y);		tab[i].nr=i+1;tab[i].kto=1;	   if(tab[i].y<=min.y){			if(tab[i].y<min.y) {				min.x=tab[i].x;min.y=tab[i].y;min.nr=tab[i].nr;min.kto=tab[i].kto;			}			else if(tab[i].x<min.x) {				min.x=tab[i].x;min.y=tab[i].y;min.nr=tab[i].nr;min.kto=tab[i].kto;							}			}		wtab[i]=&tab[i];		i++;time2--;	}	time2=time;	while(time2) {/*duchy kto=0*/		scanf("%d %d",&tab[i].x,&tab[i].y);		tab[i].nr=i+1;tab[i].kto=0;	   if(tab[i].y<=min.y){			if(tab[i].y<min.y) {				min.x=tab[i].x;min.y=tab[i].y;min.nr=tab[i].nr;min.kto=tab[i].kto;			}			else if(tab[i].x<min.x) {				min.x=tab[i].x;min.y=tab[i].y;min.nr=tab[i].nr;min.kto=tab[i].kto;							}			}		wtab[i]=&tab[i];		i++;time2--;		}	ilet=2*time;	wtab[0]=&tab[min.nr-1];	wtab[min.nr-1]=&tab[0];		//for(i=0;i<time*2;i++) {printf("%d %d \n",wtab[i]->x,wtab[i]->y);}	mielimy(0,time*2-1);		for(i=0;i<time;i++) printf("%d\n",tab[i].nr);		system("pause");	return 0;	}/*-------------------------------*/void mielimy(int od,int ile) {	min.x=wtab[od]->x;min.y=wtab[od]->y;min.kto=wtab[od]->kto;min.nr=wtab[od]->nr;	int chwila;	qsort(wtab+od+1,ile,sizeof(LOL*),por);//	int i;printf("\n");for(i=0;i<ile+1;i++) {printf("%d %d \n",wtab[i]->x,wtab[i]->y);}	if(ile==1) {		chwila=wtab[od]->nr;		wtab[od]->nr=wtab[od+1]->nr;		wtab[od+1]->nr=chwila;	}	else {		int licz=1;		int i=od+1;		while(licz) {			if(wtab[i]->kto==wtab[od]->kto)licz++;			else licz--;			i++;		}		//printf(" %d ",i);	 i=8;		chwila=wtab[od]->nr;		wtab[od]->nr=wtab[od+i-1]->nr;		wtab[od+i-1]->nr=chwila;		//i=i-od-1;		if(i-1==ile) { 			mielimy(od+1,ile-2);		}		else if(i-2==od){			mielimy(od+2,ile-2);		}		else {			mielimy(od+1,i-3-od);			mielimy(i,ilet-i-1);		}			} }/*-------------------------------*/int por(const void *w1,const void *w2) {	const LOL *p1=*(const LOL**)w1;	   const LOL *p2=*(const LOL**)w2;	int pom=((p1->x)-(min.x))*((p2->y)-(min.y))-((p2->x)-(min.x))*((p1->y)-(min.y)); 	return pom*(-1);		}/*-------------------------------*/