Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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;
- }
Advertisement
Add Comment
Please, Sign In to add comment