Pagini recente » Cod sursa (job #2089616) | Cod sursa (job #651502) | Cod sursa (job #2834695) | Cod sursa (job #1399588) | Cod sursa (job #1709072)
#include <bits/stdc++.h>
#include <algorithm>
#define pb push_back
#define mp make_pair
#define mt make_tuple
#define ll long long
#define pii pair<int,int>
#define tii tuple <int,int,int>
#define N 1000005
#define mod 2000003
#define X first
#define Y second
#define eps 0.0000000001
#define all(x) x.begin(),x.end()
#define tot(x) x+1,x+n+1
using namespace std;
struct pack {
int lin, col;
};
struct pack C[1001];
int A[2][N], n, m, nrC;
void citire();
void solve();
bool comp (const struct pack&, const struct pack&);
string file="";
int main()
{
freopen("padure2.in","r",stdin);
freopen("padure2.out","w",stdout);
citire();
sort (C+1, C+nrC+1, comp);
solve();
return 0;
}
bool comp (const struct pack &a, const struct pack &b)
{
return (a.lin<b.lin || (a.lin==b.lin && a.col<b.col));
}
void citire()
{
int i;
cin>>n>>m;
cin>>nrC;
for (i=1; i<=nrC; ++i)
cin>>C[i].lin>>C[i].col;
return;
}
void solve()
{
int lprec=0, lcrt=1, crt, ciuperca=1, i;
//initializare
for (crt=1; crt<=m; ++crt)//prima linie
{
A[0][crt]=1;
if (C[ciuperca].lin==1 && C[ciuperca].col==crt && ciuperca<=nrC)
{
A[0][crt]=0;
++ciuperca;
}
}
for (crt=2; crt<=n; ++crt)
{
A[lcrt][1]=1;
if (C[ciuperca].lin==crt && C[ciuperca].col==1 && ciuperca<=nrC)
{
A[lcrt][1]=0;
++ciuperca;
}
for (i=2; i<=m; ++i)
{
A[lcrt][i]=(A[lcrt][i-1]+A[lprec][i])%mod;
if (C[ciuperca].lin==crt && C[ciuperca].col==i && ciuperca<=nrC)
{
A[lcrt][i]=0;
++ciuperca;
}
}
lcrt=1-lcrt;
lprec=1-lprec;
}
cout<<A[lprec][m]<<"\n";
return;
}