记录编号 605717 评测结果 AAAAAAAAAAAA
题目名称 4171.[USACO25 Open Silver]Compatible Pairs 最终得分 100
用户昵称 GravatarLikableP 是否通过 通过
代码语言 C++ 运行时间 2.115 s
提交时间 2025-09-06 16:47:09 内存使用 13.30 MiB
显示代码纯文本
#include <algorithm>
#include <cstdio>
#include <map>
#include <vector>
typedef long long ll;
using namespace std;

ll N, A, B;
map<ll, ll> mp;
vector<ll> vec;
ll ans;

int main() {
  freopen("Compatible.in", "r", stdin);
  freopen("Compatible.out", "w", stdout);
  scanf("%lld %lld %lld", &N, &A, &B);
  for (int i = 1; i <= N; ++i) {
    ll n, d;
    scanf("%lld %lld", &n, &d);
    mp[d] = n;
    vec.push_back(d);
  }

  sort(vec.begin(), vec.end());

  for (const ll key : vec) {
    if (mp[B - key] > 0 && B - key >= 0) {
      if (B - key == key) {
        ans += mp[key] / 2;
        mp[key] %= 2;
      } else {
        ll minus = min(mp[B - key], mp[key]);
        ans += minus;
        mp[B - key] -= minus;
        mp[key] -= minus;
      }
    }
    if (mp[A - key] > 0 && A - key >= 0) {
      if (A - key == key) {
        ans += mp[key] / 2;
        mp[key] %= 2;
      } else {
        ll minus = min(mp[A - key], mp[key]);
        ans += minus;
        mp[A - key] -= minus;
        mp[key] -= minus;
      }
    }
  }

  printf("%lld\n", ans);
  return 0;
}