ABC 338
Table of Contents
A. Capitalized?
https://atcoder.jp/contests/abc338/tasks/abc338_a
B. Frequency
https://atcoder.jp/contests/abc338/tasks/abc338_b
C. Leftover Recipes
https://atcoder.jp/contests/abc338/tasks/abc338_c
D. Island Tour
https://atcoder.jp/contests/abc338/tasks/abc338_d
解説 AC
void solve() {
    ll n, m;
    cin >> n >> m;
    vll x(m);
    rep(i, m) {
        cin >> x[i];
        x[i]--;
    }
    vll cumsum(n * 2 + 1, 0);
    rep(i, m - 1) {
        ll mi = min(x[i], x[i + 1]);
        ll mx = max(x[i], x[i + 1]);
        ll dr = mx - mi;
        ll dl = n - dr;
        cumsum[mi] += dl;
        cumsum[mx] -= dl;
        cumsum[0] += dr;
        cumsum[mi] -= dr;
        cumsum[mx] += dr;
        cumsum[n] -= dr;
    }
    rep(i, n * 2) cumsum[i + 1] += cumsum[i];
    ll ans = INF;
    rep(i, n) chmin(ans, cumsum[i]);
    cout << ans << endl;
}
E. Chords
https://atcoder.jp/contests/abc338/tasks/abc338_e
https://atcoder.jp/contests/abc405/editorial/13011 での方式と同じ実装して通った。
void solve() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int N;
    cin >> N;
    vector<pair<int, int>> ps;
    rep(i, N) {
        int a, b;
        cin >> a >> b;
        a--, b--;
        if (a > b)
            swap(a, b);
        ps.emplace_back(a, b);
    }
    sort(all(ps), [](auto a, auto b) -> bool {
        return a.second < b.second;
    });
    auto op = [](ll a, ll b) -> ll { return a + b; };
    auto e = []() -> ll { return 0ll; };
    segtree<ll, op, e> seg(N * 2);
    rep(i, N) {
        seg.set(ps[i].first, 1);
    }
    bool ans = false;
    for (auto [a, b] : ps) {
        int sum = seg.prod(a + 1, b);
        if (sum > 0)
            ans = true;
        seg.set(a, -1);
        seg.set(b, 1);
    }
    yesno(ans);
}
F. Negative Traveling Salesman
https://atcoder.jp/contests/abc338/tasks/abc338_f