玄学代码,一直WA,求助
查看原帖
玄学代码,一直WA,求助
1288642
lmn985楼主2024/8/11 20:29
#include <bits/stdc++.h>
#define st first
#define nd second
#define MP make_pair
#define int long long
#define f(i,a,b) for(int i=a;i<=b;i++)
#define allx(a) a.begin(),a.end()
#define ally(a) a.rbegin(),a.rend()
#define add_y_ void add(int x,int y){G[x].push_back(y);}
#define add_y_d void add(int x,int y,int cost){G[x].push_back(MP(y,cost));}
#define add_w_ void add(int x,int y,int cost){G[x].push_back(y);G[y].push_back(x);}
#define add_w_d void add(int x,int y,int cost){G[x].push_back(MP(y,cost));G[y].push_back(MP(x,cost));}
using namespace std;
typedef long long ll;
const int N=10000005,X=100,dx[4]={0,0,-1,1};
const ll INF=1000000000000000000,mod=1000000007;
void read(int &a){
	char x;
	int cnt=1,ans=0;
	while(1){
		x=getchar();
		if(x==' ' or x=='\n')break;
		if(x=='-')cnt=-1;
		else ans*=10,ans+=x-'0';
	}
	a=cnt*ans;
}
void write(int a,char x){
	string s;
	while(a!=0)s+=a%10+'0',a/=10;
	reverse(s.begin(),s.end());
	for(int i=0;i<s.size();i++)
	    putchar(s[i]);
	cout<<x;
}
int gcd(ll a,ll b){
	if(min(a,b)==0)return max(a,b);
	if(a>b)return gcd(a%b,b);
	else return gcd(a,b%a);
}
int lcm(ll a,ll b){return a/gcd(a,b)*b;}
//bool cmp(int x,int y){return x>y;}
bool cmp2(pair<int,int> a,pair<int,int> b){return a.st+a.nd>b.st+b.nd;}
//---------------------以上均为模板----------------------//
double dis(double sx,double sy,double tx,double ty){
	return sqrt((tx-sx)*(tx-sx)+(ty-sy)*(ty-sy));
}
double S(double a,double  b,double c){
	double s=(a+b+c)/2.0;
	return sqrt(s*(s-a)*(s-b)*(s-c));
}
int T,n;
pair<double,double> a[N];
double mn=1000000000.0;
void solve(){
	mn=1000000000.0;
	bool flag=0;
	cin>>n;
	for(int i=0;i<n;i++)
		cin>>a[i].st>>a[i].nd;
	for(int i=0;i<n;i++){
		for(int j=i+1;j<n;j++){
			for(int k=j+1;k<n;k++){
				double x=dis(a[i].st,a[i].nd,a[j].st,a[j].nd);
				double y=dis(a[i].st,a[i].nd,a[k].st,a[k].nd);
				double z=dis(a[j].st,a[j].nd,a[k].st,a[k].nd);
				double s=S(x,y,z);
				if(s!=0.0){
					mn=min(mn,s);
					flag=1;
				}
			}
		}
	}
	if(flag)printf("%.6f\n",mn);
	else printf("%d\n",-1);
}
signed main(){
    //ios_base::sync_with_stdio(0);
	//cin.tie(0);
	//freopen("output.txt", "w", stdout);
	//freopen("input.txt","r",stdin);
	cin>>T;
	while(T--)solve();
	return 0;
}
2024/8/11 20:29
加载中...