显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,a,b,ans,ansa,ansb;
struct node{
long long d,n;
}t[2000005];
map<long long,long long>mp;
bool cmp(node x,node y){
return x.d<y.d;
}
int main(){
// freopen("Compatible.in","r",stdin);
// freopen("Compatible.out","w",stdout);
cin>>n>>a>>b;
for(int i=1;i<=n;i++){
cin>>t[i].n>>t[i].d;
mp[t[i].d]=t[i].n;
}sort(t+1,t+n+1,cmp);
for(int i=1;i<=n;i++){
long long nda=a-t[i].d;
long long ndb=b-t[i].d;
ansa=0;ansb=0;
if(ndb>=0&&mp[ndb]>0){
if(ndb==t[i].d){
ans+=mp[t[i].d]/2;
mp[t[i].d]%=2;
}else{
ansb=min(mp[ndb],mp[t[i].d]);
ans+=ansb;
mp[ndb]-=ansb;
mp[t[i].d]-=ansb;
}
}
if(nda>=0&&mp[nda]>0){
if(nda==t[i].d){
ans+=mp[t[i].d]/2;
mp[t[i].d]%=2;
}else{
ansa=min(mp[nda],mp[t[i].d]);
ans+=ansa;
mp[nda]-=ansa;
mp[t[i].d]-=ansa;
}
}
}
cout<<ans;
return 0;
}