Pagini recente » Cod sursa (job #1779541) | Cod sursa (job #1267991) | Cod sursa (job #2048313) | Cod sursa (job #1796085) | Cod sursa (job #3210199)
#include <bits/stdc++.h>
#include <cstring>
#include <cstdio>
#pragma GCC optimize ("O3")
#define din cin
#define dout out
#define pi 3.14159265359
#define sw(x,y) x^=y,y^=x,x^=y
#define bmin(a,b)((a<b)?(a):(b))
#define bmax(a,b)((a>b)?(a):(b))
#define bminify(a,b)a=bmin(a,b)
#define bmaxify(a,b)a=bmax(a,b)
#define fto(i,ii,n)for(i=ii;i<n;i++)
#define f first
#define s second
#define mod 2000003ll
#define nmax 1000002
#define lim 351
using namespace std;
typedef long long ll;
ifstream in("padure2.in");
ofstream out("padure2.out");
//FILE *fin=fopen("infasuratoare.in","r");
//FILE *fout=fopen("infasuratoare.out","w");
ll n,m,p,f[nmax]={1},fi[nmax]={1},i,j,k,l,d[nmax],s,x,y;
pair<int,int>c[nmax];
int main()
{
fto(i,1,nmax){
f[i]=i*f[i-1]%mod,fi[i]=1;
for(j=1<<30;j;j/=2)
if((mod-2)&j)
fi[i]=fi[i]*fi[i]%mod*f[i]%mod;
else fi[i]=fi[i]*fi[i]%mod;
}
in>>n>>m>>p;
fto(i,0,p)in>>c[i].f>>c[i].s,--c[i].f,--c[i].s;
//s=f[n+m-2]*fi[n-1]%mod*fi[n-1]%mod;
c[p++]=make_pair(n-1,m-1);
sort(c,c+p);
fto(i,0,p){
d[i]=f[c[i].f+c[i].s]*fi[c[i].f]%mod*fi[c[i].s]%mod;
//cout<<c[i].f<<' '<<c[i].s<<' '<<d[i]<<' ';
for(j=0;j<i;j++)
if(c[i].s>=c[j].s)
x=c[i].f-c[j].f,y=c[i].s-c[j].s,d[i]=(d[i]+d[j]*(mod-f[x+y])%mod*fi[x]%mod*fi[y])%mod;
//cout<<d[i]<<'\n';
//s=(s+(mod-d[i])*f[n+m-2-c[i].f-c[i].s]%mod*fi[n-1-c[i].f]%mod*fi[m-1-c[i].s])%mod;
}
out<<d[p-1];
}