Розділи нашого сайту


1.Новини
2.Про gpd
3.Скарги учасників
4.Розв"язки та алґоритми gpd
5.Тести
6.Гістьова книга
7.Лінки
#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;
}

generated by gpd hackers group (c) 2004
Hosted by uCoz