CCCPaste

4813bc5864894

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;

ll overlap(ll L1, ll R1, ll L2, ll R2) {
return max(0LL, min(R1, R2) - max(L1, L2));
}
ll red_line(vector<pair<ll, ll>> v) {
sort(v.begin(), v.end());
ll result = 0;
ll L = v[0].first, R = v[0].second;

for(int i = 1; i < 3; i++) {
if(v[i].first <= R) {
R = max(R, v[i].second);
}
else {
result += R - L;
L = v[i].first;
R = v[i].second;
}
}

result += R - L;
return result;
}
int main() {
vector<pair<ll, ll>> v(3);

for(int i = 0; i < 3; i++) {
cin >> v[i].first >> v[i].second;
}

ll K;
cin >> K;

ll len = 0;
vector<int> idx = {0, 1, 2};
do {
vector<pair<ll, ll>> tmp = {v[idx[0]], v[idx[1]], v[idx[2]]};

ll full_len = (tmp[0].second - tmp[0].first) + (tmp[1].second - tmp[1].first) + (tmp[2].second- tmp[2].first);

ll res2 = red_line(tmp);
ll res = min(full_len, res2 + K);
len = max(len, res);

} while(next_permutation(idx.begin(), idx.end()));

cout << len << endl;
return 0;
}