#include <iostream>
#include <cmath> // For std::abs
// Define a Node structure for the linked list
struct Node {
double data;
Node* next;
Node(double value) : data(value), next(nullptr) {}
};
// Function to find the sum of the absolute differences of all pairs
double sumOfAbsoluteDifferences(Node* root) {
double sum = 0.0;
for (Node* i = root; i != nullptr; i = i->next) {
for (Node* j = root; j != nullptr; j = j->next) {
sum += std::abs(i->data - j->data);
}
}
return sum / 2; // To avoid double counting
}
// Helper function to add a new node to the list
void append(Node*& root, double value) {
if (root == nullptr) {
root = new Node(value);
} else {
Node* temp = root;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = new Node(value);
}
}
// Main function to test the implementation
int main() {
Node* root = nullptr;
// Input: 3.5, 7.3
append(root, 3.5);
append(root, 7.3);
// Calculate and output the result
std::cout << "Sum of absolute differences: " << sumOfAbsoluteDifferences(root) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+IC8vIEZvciBzdGQ6OmFicwoKLy8gRGVmaW5lIGEgTm9kZSBzdHJ1Y3R1cmUgZm9yIHRoZSBsaW5rZWQgbGlzdApzdHJ1Y3QgTm9kZSB7CiAgICBkb3VibGUgZGF0YTsKICAgIE5vZGUqIG5leHQ7CgogICAgTm9kZShkb3VibGUgdmFsdWUpIDogZGF0YSh2YWx1ZSksIG5leHQobnVsbHB0cikge30KfTsKCi8vIEZ1bmN0aW9uIHRvIGZpbmQgdGhlIHN1bSBvZiB0aGUgYWJzb2x1dGUgZGlmZmVyZW5jZXMgb2YgYWxsIHBhaXJzCmRvdWJsZSBzdW1PZkFic29sdXRlRGlmZmVyZW5jZXMoTm9kZSogcm9vdCkgewogICAgZG91YmxlIHN1bSA9IDAuMDsKICAgIGZvciAoTm9kZSogaSA9IHJvb3Q7IGkgIT0gbnVsbHB0cjsgaSA9IGktPm5leHQpIHsKICAgICAgICBmb3IgKE5vZGUqIGogPSByb290OyBqICE9IG51bGxwdHI7IGogPSBqLT5uZXh0KSB7CiAgICAgICAgICAgIHN1bSArPSBzdGQ6OmFicyhpLT5kYXRhIC0gai0+ZGF0YSk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHN1bSAvIDI7IC8vIFRvIGF2b2lkIGRvdWJsZSBjb3VudGluZwp9CgovLyBIZWxwZXIgZnVuY3Rpb24gdG8gYWRkIGEgbmV3IG5vZGUgdG8gdGhlIGxpc3QKdm9pZCBhcHBlbmQoTm9kZSomIHJvb3QsIGRvdWJsZSB2YWx1ZSkgewogICAgaWYgKHJvb3QgPT0gbnVsbHB0cikgewogICAgICAgIHJvb3QgPSBuZXcgTm9kZSh2YWx1ZSk7CiAgICB9IGVsc2UgewogICAgICAgIE5vZGUqIHRlbXAgPSByb290OwogICAgICAgIHdoaWxlICh0ZW1wLT5uZXh0ICE9IG51bGxwdHIpIHsKICAgICAgICAgICAgdGVtcCA9IHRlbXAtPm5leHQ7CiAgICAgICAgfQogICAgICAgIHRlbXAtPm5leHQgPSBuZXcgTm9kZSh2YWx1ZSk7CiAgICB9Cn0KCi8vIE1haW4gZnVuY3Rpb24gdG8gdGVzdCB0aGUgaW1wbGVtZW50YXRpb24KaW50IG1haW4oKSB7CiAgICBOb2RlKiByb290ID0gbnVsbHB0cjsKCiAgICAvLyBJbnB1dDogMy41LCA3LjMKICAgIGFwcGVuZChyb290LCAzLjUpOwogICAgYXBwZW5kKHJvb3QsIDcuMyk7CgogICAgLy8gQ2FsY3VsYXRlIGFuZCBvdXRwdXQgdGhlIHJlc3VsdAogICAgc3RkOjpjb3V0IDw8ICJTdW0gb2YgYWJzb2x1dGUgZGlmZmVyZW5jZXM6ICIgPDwgc3VtT2ZBYnNvbHV0ZURpZmZlcmVuY2VzKHJvb3QpIDw8IHN0ZDo6ZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==