题目链接
容易推导出在k=0情况下答案为
限制某个位置不能取某个数是,把前n项和减去即可
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#include<set>
using namespace std;
#define int long long
const int mod = 1e9+7;
int Mod(int x){return (x%mod+mod)%mod;}
int qmi(int a,int b){int res=1;while(b){if(b&1)res=res*a%mod;a=a*a%mod;b>>=1;}return res%mod;}
signed main()
{
int n,m,k;cin>>n>>m>>k;
int sum=n*(n+1)/2%mod;
map<int,int>mp;
set<pair<int,int>>S;
for(int i=0;i<k;i++)
{
int x,v;cin>>x>>v;
if(S.count({x,v}))continue;
mp[x]+=v;
S.insert({x,v});
}
int res=qmi(sum,m-mp.size());
for(auto [x,v] : mp)res=res*(sum-v)%mod;
cout<<Mod(res)<<'\n';
}