// C++ Versionintsta[N],top;// 将凸包上的节点编号存在栈里,第一个和最后一个节点编号相同boolis[N];llpf(llx){returnx*x;}lldis(intp,intq){returnpf(a[p].x-a[q].x)+pf(a[p].y-a[q].y);}llsqr(intp,intq,inty){returnabs((a[q]-a[p])*(a[y]-a[q]));}llmx;voidget_longest(){// 求凸包直径intj=3;if(top<4){mx=dis(sta[1],sta[2]);return;}for(inti=1;i<=top;++i){while(sqr(sta[i],sta[i+1],sta[j])<=sqr(sta[i],sta[i+1],sta[j%top+1]))j=j%top+1;mx=max(mx,max(dis(sta[i+1],sta[j]),dis(sta[i],sta[j])));}}
// C++ Versionvoidget_biggest(){intj=3,l=2,r=2;doublet1,t2,t3,ans=2e10;for(inti=1;i<=top;++i){while(sqr(sta[i],sta[i+1],sta[j])<=sqr(sta[i],sta[i+1],sta[j%top+1]))j=j%top+1;while(dot(sta[i+1],sta[r%top+1],sta[i])>=dot(sta[i+1],sta[r],sta[i]))r=r%top+1;if(i==1)l=r;while(dot(sta[i+1],sta[l%top+1],sta[i])<=dot(sta[i+1],sta[l],sta[i]))l=l%top+1;t1=sqr(sta[i],sta[i+1],sta[j]);t2=dot(sta[i+1],sta[r],sta[i])+dot(sta[i+1],sta[l],sta[i]);t3=dot(sta[i+1],sta[i+1],sta[i]);ans=min(ans,t1*t2/t3);}}