Đề bài toán: Cho N tọa độ điểm trên mặt phẳng Oxy. Hãy lập trình tính tổng bình phương khoảng cách giữa tất cả các cặp điểm.
Input
- Dòng đầu tiên chứa số nguyên dương N là số điểm trên mặt phẳng thỏa 1 ≤N≤10^5
- N dòng tiếp theo, mỗi dòng chứa hai số nguyên X, Y là tọa độ của mỗi điểm thỏa −10^4≤X, Y≤10^4
Có thể có các tọa độ trùng nhau.
Output
In ra số cần tính.
Bài code của em:
#include<iostream>
using namespace std;
int main(){
long long n;
int arr[100000][2];
cin>>n;
for(long i=0;i<n;i++){
for(int j=0; j<2;j++){
cin>>arr[i][j];
}
}
long long tongkc=0;
for(long t=0; t<(n-1) ; t++){
long long kc1;
for(long j=t+1; j<n ;j++){
kc1=(arr[j][0]-arr[t][0])*(arr[j][0]-arr[t][0])+(arr[j][1]-arr[t][1])*(arr[j][1]-arr[t][1]);
tongkc+=kc1;
}
}
cout<<tongkc;
return 0;
}
Khi nộp bài vào hệ thống thì đúng với 9/10 testcase. Case thứ 10 bị out time limit (time limit 1000ms). Trong khi em chạy case đấy hết 3960 ms. Em có tìm trên mạng nhưng vẫn k biết cách tối ưu. Mong mọi người có thể gợi ý cho em cách tối ưu hoặc tài liệu để nghiên cứu bài này ạ. Em xin cảm ơn mọi người nhiều ạ.