はまやんはまやんはまやん

hamayanhamayan's blog

String Concat [CSAcademy #68 A]

https://csacademy.com/contest/round-68/task/string-concat/

N個の文字列がある。
各文字について他のN-1個の文字列から2つ選んで結合すると、その文字列が作れるかを判定せよ。
作れる文字列の添字を全て出力せよ。

解法

各文字列について他の文字列の全ての組を試して、結合して作れるかを判定すればいい。
C++なら+で繋いで==で比較すれば実現できる。

int N; string A[101010];
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> N;
    rep(i, 0, N) cin >> A[i];

    vector<int> ans;
    rep(i, 0, N) {
        int ok = 0;
        rep(a, 0, N) rep(b, 0, N) if (a != b and a != i and b != i) {
            if (A[a] + A[b] == A[i]) ok = 1;
        }
        if(ok) ans.push_back(i + 1);
    }
    
    int n = ans.size();
    rep(i, 0, n) {
        if (i) printf(" ");
        printf("%d", ans[i]);
    }
    printf("\n");
}