Giải pháp cho bài này đã đúng chưa?

278193846_3101352240179303_1147142571443551892_n

#include<iostream>
#include<fstream>
#include<algorithm>

using namespace std;

#define ulli unsigned long long int

ifstream input("SUM.INP");
ofstream output("SUM.OUT");
ulli S[200001];
int main(){
	ulli res = 0;
	int N;
	input >> N;
	ulli arr[N+1];
	for(int i = 1; i <= N;i++){
		input >> arr[i];
	}
	sort(arr+1,arr+N+1);

	for(int i = 1; i <= N;i++){
		S[i] = S[i-1]+arr[i];
	}

	for(int i = N;i > 0;i--){
		res += arr[i]*(i-1)-S[i-1];
	}
	output << res << endl;
}

Giải pháp của bạn là gì, độ phức tạp ra sao?

2 Likes

Do S[] là global nên mặc định khởi tạo bằng 0.
Như vậy là ổn, có thể thay bằng res += arr[i] * i - S[i].

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?