Cho tọa độ 5000 điểm (y, x) là (tung độ, hoành độ) thuộc kiểu int
Làm thế nào để tìm ra 3 đỉnh tam giác có diện tích lớn nhất? Time : 2s
Diện tích thì em dùng tích có hướng. Nhưng 3 vòng for TLE cái chắc, có cách nào khắc phục không ạ?
#include <bits/stdc++.h>
#define fi(i, a, b) for(int i = a; i <= b; i++)
#define fid(i, a, b) for(int i = a; i >= b; i--)
#define ll long long
#define maxn 5005
using namespace std;
int n, a, b, c;
ll S, x[maxn], y[maxn], maxS;
ll DienTich(int a, int b, int c){
return abs((x[b]-x[a]) * (y[c]-y[a]) - (x[c]-x[a]) * (y[b]-y[a]));
}
int main(){
cin >> n >> S;
fi(i, 1, n) cin >> x[i] >> y[i];
fi(i, 1, n)
fi(j, i+1, n)
fi(k, j+1, n)
if (DienTich(i, j, k) > maxS){
maxS = DienTich(i, j, k);
a = i; b = j; c = k;
}
cout << x[a] << ' ' << y[a] << '\n';
cout << x[b] << ' ' << y[b] << '\n';
cout << x[c] << ' ' << y[c];
}