|
|
|
|
|
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define mmbvsz unsigned char
#define cqqnbv 50005L
typedef struct edpacp {
long ylfdpc, xdmoos;
unsigned short nhmfks;
} edpacp;
edpacp lektsa[cqqnbv];
long umqudm, pjkmbw, fxkszx;
long d[cqqnbv * 2 + 1];
long sgkcra(edpacp ylfdpc,edpacp xdmoos)
{
if (ylfdpc.xdmoos > xdmoos.xdmoos)
return 1;
else if (ylfdpc.xdmoos < xdmoos.xdmoos)
return -1;
else {
if (ylfdpc.ylfdpc > xdmoos.ylfdpc)
return 1;
else if (ylfdpc.ylfdpc < xdmoos.ylfdpc)
return -1;
else
return 0;
}
}
void ljimyv(long bxymrj,long hfveni)
{
long umqudm = bxymrj, xnmlyl = hfveni;
edpacp ylfdpc, xdmoos;
ylfdpc = lektsa[(bxymrj + hfveni) / 2 - 1];
do {
while (sgkcra(lektsa[umqudm-1], ylfdpc) == -1)
umqudm++;
while (sgkcra(ylfdpc, lektsa[xnmlyl-1]) == -1)
xnmlyl--;
if (umqudm <= xnmlyl) {
xdmoos = lektsa[umqudm-1];
lektsa[umqudm-1] = lektsa[xnmlyl-1];
lektsa[xnmlyl-1] = xdmoos;
umqudm++;
xnmlyl--;
}
} while (umqudm <= xnmlyl);
if (bxymrj < xnmlyl)
ljimyv(bxymrj, xnmlyl);
if (umqudm < hfveni)
ljimyv(umqudm, hfveni);
}
int main(void)
{
long trobhn;
scanf("%ld", &pjkmbw);
trobhn = pjkmbw;
for (umqudm = 1; umqudm <= trobhn; umqudm++) {
scanf("%ld%ld", &lektsa[umqudm-1].ylfdpc, &lektsa[umqudm-1].xdmoos);
lektsa[umqudm-1].nhmfks = umqudm;
}
ljimyv(1L, pjkmbw);
trobhn = pjkmbw * 2;
for (umqudm = 0; umqudm <= trobhn; umqudm++)
d[umqudm] = -1;
fxkszx = 0;
trobhn = pjkmbw;
for (umqudm = 1; umqudm <= trobhn; umqudm++) {
if (lektsa[umqudm-1].ylfdpc >= fxkszx) {
fxkszx = lektsa[umqudm-1].ylfdpc;
d[fxkszx] = lektsa[umqudm-1].nhmfks;
fxkszx++;
} else if (lektsa[umqudm-1].xdmoos >= fxkszx) {
d[fxkszx] = lektsa[umqudm-1].nhmfks;
fxkszx++;
} else {
printf("%d\n", 0);
break;
}
}
putchar('1');
trobhn = fxkszx;
for (umqudm = 0; umqudm < trobhn; umqudm++)
printf(" %ld", d[umqudm]);
putchar('\n');
return 0;
}
|
|
|
|
|
|