#include <bits/stdc++.h>
using namespace std;
struct Node {
int data;
Node* next;
};
int sumOfAbsoluteDifferences(Node* root) {
if (!root || !root->next) {
return 0;
}
int sum = 0;
Node* current = root;
while (current && current->next) {
sum += abs(current->data - current->next->data);
current = current->next->next;
}
return sum;
}
void appendNode(Node*& root, int value) {
if (!root) {
root = new Node();
return;
}
Node* current = root;
while (current->next) {
current = current->next;
}
current->next = new Node();
}
void print(Node* root) {
Node* current = root;
while (current) {
cout << current->data << " ";
current = current->next;
}
cout << endl;
}
int main() {
Node* root= NULL;
appendNode(root, 10);
appendNode(root, 20);
appendNode(root, 15);
appendNode(root, 5);
std::cout << "Linked list: ";
print(root);
int result = sumOfAbsoluteDifferences(root);
cout << "Sum of absolute differences: " << result << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCnN0cnVjdCBOb2RlIHsKICAgIGludCBkYXRhOwogICAgTm9kZSogbmV4dDsKCiAgICAKfTsKCgppbnQgc3VtT2ZBYnNvbHV0ZURpZmZlcmVuY2VzKE5vZGUqIHJvb3QpIHsKICAgIGlmICghcm9vdCB8fCAhcm9vdC0+bmV4dCkgewogICAgICAgIAogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIGludCBzdW0gPSAwOwogICAgTm9kZSogY3VycmVudCA9IHJvb3Q7CgogICAKICAgIHdoaWxlIChjdXJyZW50ICYmIGN1cnJlbnQtPm5leHQpIHsKICAgICAgICBzdW0gKz0gYWJzKGN1cnJlbnQtPmRhdGEgLSBjdXJyZW50LT5uZXh0LT5kYXRhKTsKICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+bmV4dC0+bmV4dDsKICAgIH0KCiAgICByZXR1cm4gc3VtOwp9CgoKdm9pZCBhcHBlbmROb2RlKE5vZGUqJiByb290LCBpbnQgdmFsdWUpIHsKICAgIGlmICghcm9vdCkgewogICAgICAgIHJvb3QgPSBuZXcgTm9kZSgpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBOb2RlKiBjdXJyZW50ID0gcm9vdDsKICAgIHdoaWxlIChjdXJyZW50LT5uZXh0KSB7CiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHQ7CiAgICB9CiAgICBjdXJyZW50LT5uZXh0ID0gbmV3IE5vZGUoKTsKfQoKCnZvaWQgcHJpbnQoTm9kZSogcm9vdCkgewogICAgTm9kZSogY3VycmVudCA9IHJvb3Q7CiAgICB3aGlsZSAoY3VycmVudCkgewogICAgICAgIGNvdXQgPDwgY3VycmVudC0+ZGF0YSA8PCAiICI7CiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHQ7CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7Cn0KCgppbnQgbWFpbigpIHsKICAgIE5vZGUqIHJvb3Q9IE5VTEw7CgogICAgCiAgICBhcHBlbmROb2RlKHJvb3QsIDEwKTsKICAgIGFwcGVuZE5vZGUocm9vdCwgMjApOwogICAgYXBwZW5kTm9kZShyb290LCAxNSk7CiAgICBhcHBlbmROb2RlKHJvb3QsIDUpOwoKICAgIAogICAgc3RkOjpjb3V0IDw8ICJMaW5rZWQgbGlzdDogIjsKICAgIHByaW50KHJvb3QpOwoKIAogICAgaW50IHJlc3VsdCA9IHN1bU9mQWJzb2x1dGVEaWZmZXJlbmNlcyhyb290KTsKICAgIGNvdXQgPDwgIlN1bSBvZiBhYnNvbHV0ZSBkaWZmZXJlbmNlczogIiA8PCByZXN1bHQgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=