#include #include /*-------------------------------*/ 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].yx,wtab[i]->y);} mielimy(0,time*2-1); for(i=0;ix;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;ix,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); } /*-------------------------------*/