Пример #1
0
int main()
{
  int a[100],n,i;
  scanf("%d",&n);
  for(i=0;i<n;i++)
   scanf("%d",&a[i]);
  sort(a,n);
  for(i=0;i<n;i++)
    printf("%d ",a[i]);
  printf("\n");
  inser(a,n);
  for(i=0;i<n;i++)
    printf("%d ",a[i]);
  printf("\n");
  chose_sort(a,n);
  for(i=0;i<n;i++)
    printf("%d ",a[i]);
  printf("\n");
  return 0;
}
Пример #2
0
int main(int argc, char *argv[])
{
    setIO("sample");
    n = gi;
    for(int i = 1;i<=n;++i) a[i].Y = gi,sou[i] = i;
    for(int i = 1;i<=n;++i) a[i].X = gi;
    sort(sou+1,sou+1+n,cmp2);
    sort(a+1,a+n+1,cmp1);
    stk[++top] = 1;
    for(int i = 2;i<=n;++i)
    {
      if(dblcmp(a[stk[top]].X-a[i].X) == 0) continue;
      while(top)
      {
       pdd pu = inser(stk[top],i);
       if(pu.X<0) --top;
       else if(top >= 2 && pu.Y<getv(stk[top-1],pu.X)) --top;
       else break;
      }
      stk[++top] = i;
    }
    for(int i = 1;i<=top;++i)
    {
     int x = stk[i];
     for(int j = x;j<=n;++j)
      if(dblcmp(a[j].X - a[x].X) != 0 || dblcmp(a[j].Y - a[x].Y) != 0)
       break;
      else
       ans.pb(sou[j]);
    }
    sort(ans.begin(),ans.end());
    printf("%d\n",ans.size());
    for(int i = 0;i<ans.size()-1;++i)
     printf("%d ",ans[i]);
    printf("%d\n",ans[ans.size()-1]);
    closeIO();
    return EXIT_SUCCESS;
}