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; }
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; }