ARC 195

https://atcoder.jp/contests/arc195

A. Twice Subsequence

https://atcoder.jp/contests/arc195/tasks/arc195_a

$A$ の前方から抜き出した $B$ に一致する部分列と、$A$ の後方から抜き出した $B$ に一致する部分列が異なれば Yes, そうでなければ No.

void solve() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    ll N, M;
    cin >> N >> M;
    vll A(N), B(M);
    rep(i, N) cin >> A[i];
    rep(i, M) cin >> B[i];

    vint lid;
    int j = 0;
    rep(i, N) {
        if (A[i] == B[j]) {
            lid.push_back(i);
            j++;
        }
        if (j == M) break;
    }

    vint rid;
    j = M - 1;
    for (int i = N - 1; i >= 0; i--) {
        if (A[i] == B[j]) {
            rid.push_back(i);
            j--;
        }
        if (j < 0) break;
    }
    reverse(all(rid));

    yesno((ll)rid.size() == M && (ll)lid.size() == M && rid != lid);
}

B. Uniform Sum

https://atcoder.jp/contests/arc195/tasks/arc195_b

C. Hamiltonian Pieces

https://atcoder.jp/contests/arc195/tasks/arc195_c

D. Swap and Erase

https://atcoder.jp/contests/arc195/tasks/arc195_d

E. Random Tree Distance

https://atcoder.jp/contests/arc195/tasks/arc195_e