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); }/*-------------------------------*/