90分求调
查看原帖
90分求调
1393704
langmou楼主2024/9/28 22:56
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define N 1000000007
struct num
{
	int l;
	int r;
} a[100010],qwq[100010];
bool cmp(num x,num y)
{
	if(x.l==y.l) return x.r<y.r;
	return x.l<y.l;
}
int n,m;
long long k;
int ans=1,q=1,q1,ed=1,qwe;
int pw(int a,int b)
{
	if(b==0) return 1;
	if(b==1) return a;
	if(b>>1<<1==b)
	{
		int qwer=pw(a,b>>1);
		return (qwer*qwer)%N;
	}
	else
	{
		int qwer=pw(a,b>>1);
		return (a*((qwer*qwer)%N)%N)%N;
	}
}
signed main()
{
	cin >> n >> m >> k;
	if(k!=0)
	{
		qwe--;
	}
	for(int i=1; i<=k; i++)
	{
		scanf("%lld",&a[i].l);
		scanf("%lld",&a[i].r);
	}
	q1=n*(n+1);
	q1>>=1;
	q1%=N;
	sort(a+1,a+k+1,cmp);
	qwq[ed]=a[ed];
	ed++;
	for(int i=2; i<=k; i++)
	{
		if(a[i].l==a[i-1].l)
		{
			if(a[i].r!=a[i-1].r)
			{
				qwq[ed]=a[i];
				ed++;
			}
		}
		else
		{
			qwq[ed]=a[i];
			ed++;
		}
	}
	for(int i=1; i<=ed; i++)
	{
		if(qwq[i].l!=qwq[i-1].l)
		{
			qwe++;
			ans*=q;
			ans%=N;
			q=q1;
		}
		q-=qwq[i].r;
	}
	ans*=pw(q1,m-qwe)%N;
	ans%=N;
	cout << ans;
	return 0;
}
2024/9/28 22:56
加载中...