Pagini recente » Cod sursa (job #2683589) | Istoria paginii preoni-2007/runda-1/solutii | Cod sursa (job #2036080) | Cod sursa (job #2431552) | Cod sursa (job #1710671)
#include <fstream>
#include <algorithm>
#define x first
#define y second
using namespace std;
const int MOD=2000003;
int i,j,h,w,n,b[1<<20],c[1<<20],d[1<<20],e[1<<20];
pair <int,int> a[1<<10];
ifstream f("padure2.in");
ofstream g("padure2.out");
int ceoi(int q,int w)
{
return 1LL*b[q+w]*c[w]%MOD*c[q]%MOD;
}
int main()
{
f>>h>>w>>n;
d[1]=b[0]=c[0]=1;
int m=h+w;
for(i=2;i<=m;++i) d[i]=1LL*(MOD/i)*(MOD-d[MOD%i])%MOD;
for(i=1;i<=m;++i) c[i]=1LL*c[i-1]*d[i]%MOD;
for(i=1;i<=m;++i) b[i]=1LL*b[i-1]*i%MOD;
for(i=1;i<=n;++i) f>>a[i].x>>a[i].y;
a[++n]={h,w};
sort(a+1,a+n+1);
for(i=1;i<=n;++i)
{
for(j=1;j<i;++j)
if(a[j].y<=a[i].y) e[i]=(-ceoi(a[i].x-a[j].x,a[i].y-a[j].y)*1LL*e[j]+e[i])%MOD;
e[i]=(e[i]+ceoi(a[i].x-1,a[i].y-1)+MOD)%MOD;
}
g<<e[n];
return 0;
}