#include #include #define MAX 1024 typedef struct { int x,y,z; } kostka; int n,npt; kostka kostky[MAX]; int itree[2*MAX-1]; /* vraci maximum z hodnot prirazenych cislum v intervalu 0..sir-1 */ int best_v(int sir) { int asir=npt/2,ain=0,abest=0; while (sir>0) { if (sir>=asir) { if (itree[2*ain+1]>abest) abest=itree[2*ain+1]; ain=2*ain+2; sir-=asir; } else ain=2*ain+1; asir/=2; } return abest; } /* priradi cislu sir hodnotu vys */ void set_v(int sir,int vys) { int asir=npt,ain=0; while (asir>0) { asir/=2; if (itree[ain]=asir) { ain=2*ain+2; sir-=asir; } else ain=2*ain+1; } } int cmpyx(const void *a,const void *b) { const kostka *aa=a,*bb=b; return aa->y-bb->y?:aa->x-bb->x; } int cmpxy(const void *a,const void *b) { const kostka *aa=a,*bb=b; return aa->x-bb->x?:aa->y-bb->y; } int main(void) { int i; scanf("%d",&n); for (npt=1;npt