Beginners After Typhoon Contest 担当問題解答例

includeなどは省略させていただきます。

B

int main() {
    int a, b, c, d;
    string ans;
    scanf("%d%d%d%d", &a, &b, &c, &d);
    if (a > c) {
        ans = "null";
    }
    else if (a < c) {
        ans = "tRue";
    }
    else {
        if (b == d) {
            ans = "Draw";
        }
        else if (b + 1 == d || b - 2 == d) {
            ans = "null";
        }
        else {
            ans = "tRue";
        }
    }
    printf("%s\n", ans.c_str());
    return 0;
}

C

int main() {
    string s;
    cin >> s;
    cout << (s == "ushitapunikiakun" ? s : "No") << endl; 
    return 0;
}

F

int main() {
    int a, b, c, d, p, q;
    cin >> a >> b >> c >> d >> p >> q;
    long long M = INF * -1, xM, m = INF, xm;
    for(int i = p; i <= q; ++i){
        long long atai = a * i * i * i + b * i * i + c * i + d;
        if(atai > M){
            M = atai;
            xM = i;
        }
        if(atai < m){
            m = atai;
            xm = i;
        }
    }
    cout << M << ' ' << xM << ' ' << m << ' ' << xm << endl;
    return 0;
}

G

#define rep(i, n) for(int i = 0; i < (n); ++i)
int main() {
            int n, m;
            string s;
            cin >> n >> m >> s;
            vector<vector<bool>> a(n + 1, vector<bool>(n + 1));
            a[0][0] = true;
            int x = 0, y = 0;
            rep(i, m) {
                if (s[i] == 'U') {
                    ++y;
                }
                else if (s[i] == 'D') {
                    --y;
                }
                else if (s[i] == 'R') {
                    ++x;
                }
                else {
                    --x;
                }
                a[x][y] = true;
            }
            rep(i, n + 1) {
                rep(j, n + 1) {
                    cout << (a[j][n - i] == true ? 0 : 1);
                    if (j != n)cout << ' ';
                }
                cout << '\n';
            }
    return 0;
}

L

using ll = long long;
#define rep(i,n) for(int i = 0; i < (n); ++i)

int main() {
        int n;
    scanf("%d", &n);
    vector<int> a(n);
    rep(i, n)scanf("%d", &a[i]);
    vector<ll> r(n + 1);
    r[0] = 0;
    rep(i, n) {
        r[i + 1] = r[i] ^ a[i];
        //printf("%lld\n", r[i + 1]);
    }
    unordered_map<ll, ll> aa = {};
    for (auto aaa : r) {
        ++aa[aaa];
    }
    ll ans = 0;
    for (auto aaa : aa) {
        //if (aaa.second > 1)printf("%lld\n", aaa.first);
        ans += aaa.second * (aaa.second - 1) / 2;
    }
    printf("%lld\n", ans); 
    return 0;
}

P

using namespace std;
using ll = long long;
#define rep(i, n) for(int i = 0; i < (n); ++i)
const ll INF = 1e9;

void dfs(int now, vector<vector<int>> ki, int flag, ll& ans, int n, ll cost) {
    if (flag == (1 << n) - 1) {
        ans = min(ans, cost);
        return;
    }
    else {
        rep(i, n) {
            int next = ki[now][i];
            if ((flag & (1 << i)) == 0 && next != 0) {
                dfs(i, ki, flag + (1 << i), ans, n, cost + ki[now][i]);
            }
        }
    }
}

int main() {
                int n, m, a, b, c, flag = 0;
            ll ans = INF;
            cin >> n >> m;
            vector<vector<int>> tree(n, vector<int>(n));
            rep(i, m) {
                cin >> a >> b >> c;
                tree[a - 1][b - 1] = c;
                tree[b - 1][a - 1] = c;
            }
            ll cost = 0;
            dfs(0, tree, flag + 1, ans, n, cost);
            cout << ans << endl;
    return 0;
}