比赛 寒假集训5 评测结果 AAAAAAAAAA
题目名称 на меня 最终得分 100
用户昵称 梦那边的美好ME 运行时间 3.807 s
代码语言 C++ 内存使用 134.44 MiB
提交时间 2026-03-01 12:34:08
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long

const int num=2010;

ll n,a[210000],b[210000],fac[110000],inv[110000],f[4200][4200];
ll ans,mod;

ll mpow(ll aa,ll bb){
	ll res=1;
	while (bb){
		if (bb&1) res=res*aa%mod;
		aa=aa*aa%mod;
		bb>>=1;
	}
	return res;
}
ll C(ll aa,ll bb){
	if (aa<0||bb<0||aa<bb) return 0;
	return fac[aa]*inv[bb]%mod*inv[aa-bb]%mod;
}

int main(){
	freopen("BBQ.in","r",stdin);
	freopen("BBQ.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n>>mod;
	fac[0]=1;
	inv[0]=mpow(fac[0],mod-2)%mod;
	for (ll i=1;i<=10000;i++){
		fac[i]=(fac[i-1]*i)%mod;
		inv[i]=mpow(fac[i],mod-2)%mod;
	}
	for (ll i=1;i<=n;i++){
		cin>>a[i]>>b[i];
		f[num-a[i]][num-b[i]]++;
	}
	for (ll i=1;i<=num*2;i++){
		for (ll j=1;j<=num*2;j++){
			f[i][j]=(f[i][j]+f[i-1][j]+f[i][j-1])%mod;
		}
	}
	for (ll i=1;i<=n;i++){
		ans=(ans+f[num+a[i]][num+b[i]])%mod;
		ans=(ans-C(2*a[i]+2*b[i],2*a[i]))%mod;
		ans=(ans+mod)%mod;
	}
	ans=(ans*mpow(2,mod-2))%mod;
	cout<<ans<<'\n';
	return 0;
}