比赛 果蝇王邀请赛div1 评测结果 AWWWWWWWWW
题目名称 果蝇炸弹 最终得分 10
用户昵称 hsl_beat 运行时间 0.117 s
代码语言 C++ 内存使用 3.70 MiB
提交时间 2026-08-27 11:02:21
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
    freopen("bombmine.in", "r", stdin);
    freopen("bombmine.out", "w", stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int c;
    cin >> c;
    int n;
    cin >> n;
    if (n > 25) {
        cout << "ZSY喜欢玩异环。";
        return 0;
    }
    vector<int> a(n), r(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i] >> r[i];
    }
    vector<bool> vis((1 << n), 0);
    for (int i = 0; i < (1 << n); i++) {
        vector<bool> viss(n, 0);
        for (int j = 0; j < n; j++) {
            if ((i >> j) & 1) {
                for (int k = 0; k < n; k++) {
                    if (llabs(a[k] - a[j]) <= r[j]) {
                        viss[k] = 1;
                    }
                }
            }
        }
        for (int j = 0; j < n; j++) {
            if (viss[j]) {
                for (int k = 0; k < n; k++) {
                    if (llabs(a[k] - a[j]) <= r[j]) {
                        viss[k] = 1;
                    }
                }
            }
        }
        for (int j = 0; j < n; j++) {
            if (viss[j]) {
                for (int k = 0; k < n; k++) {
                    if (llabs(a[k] - a[j]) <= r[j]) {
                        viss[k] = 1;
                    }
                }
            }
        }
        int tp = 0;
        for (int j = 0; j < n; j++) {
            tp += viss[j] * (1 << j);
        }
        vis[tp] = 1;
    }
    int ans = 0;
    for (int i = 0; i < (1 << n); i++) {
        ans += vis[i];
    }
    cout << ans;
    return 0;
}