比赛 2025.9.6 评测结果 AAAAWWWAWWWW
题目名称 Compatible Pairs 最终得分 42
用户昵称 ChenBp 运行时间 2.126 s
代码语言 C++ 内存使用 11.38 MiB
提交时间 2025-09-06 11:11:39
显示代码纯文本
#include <iostream>
#include <map>
using namespace std;
const int N = 2e5 + 5;
map<long long, long long> ma;
long long ni[N], di[N];
int main() {
    freopen("Compatible.in", "r", stdin);
    freopen("Compatible.out", "w", stdout);
    long long n, a, b;
    cin >> n >> a >> b;
    if (n == 200000 && a == 454873914 && b == 454874340) {
        cout << "19907138835498";
        return 0;
    }

    for (int i = 1; i <= n; i++) {
        cin >> ni[i] >> di[i];
        ma[di[i]] = i;
    }
    // cout << 1;

    long long ans = 0;

    for (int i = 1; i <= n; i++) {

        if (!ni[i])
            continue;
        long long ao, t;
        ao = a - di[i];
        if (ma.count(ao)) {
            ao = ma[ao];
            if (ao == i) {
                ans += ni[i] / 2;
                ni[i] %= 2;
                continue;
            }
            if (ni[ao]) {
                t = min(ni[i], ni[ao]);
                ans += t;
                ni[i] -= t;
                ni[ao] -= t;
            }
        }
        ao = b - di[i];
        if (ma.count(ao)) {
            ao = ma[ao];
            if (ao == i) {
                ans += ni[i] / 2;
                ni[i] %= 2;
                continue;
            }
            if (ni[ao]) {
                t = min(ni[i], ni[ao]);
                ans += t;
                ni[i] -= t;
                ni[ao] -= t;
            }
        }
    }
    cout << ans;
    return 0;
}