简单暴力题,读入%lld会WA,%I64d能过。
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; const int maxn=100+10; int T,n; struct Point { long long x; long long y; }p[maxn]; long long d[5]; long long dis2(int a,int b) { return (p[a].x-p[b].x)*(p[a].x-p[b].x)+(p[a].y-p[b].y)*(p[a].y-p[b].y); } int f(int a,int b,int c) { d[0]=dis2(a,b); d[1]=dis2(b,c); d[2]=dis2(a,c); sort(d,d+3); if(d[0]+d[1]>d[2]) return 1; return 0; } int main() { scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%I64d%I64d",&p[i].x,&p[i].y); int ans=0; for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) { for(int k=j+1;k<=n;k++) { ans=ans+f(i,j,k); } } } printf("%d\n",ans); } return 0; }