Pagini recente » Profil Simon2712 | Profil Simon2712 | bruh | Profil Simon2712 | Cod sursa (job #1709968)
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#define MOD 2000003
using namespace std;
int N, M, C;
struct ciuperca
{
int l,c;
};
vector<ciuperca> v;
int a[2][1000001];
bool cmp (ciuperca X, ciuperca Y)
{
if (X . l != Y . l) return X . l < Y . l;
if (X . l == Y . l) return (X . c < Y . c);
}
bool cmp2 (ciuperca X, ciuperca Y)
{
if (X . l < Y . l) return 1;
if (X . l == Y . l) return (X . c < Y . c);
}
bool isTree(int i, int j)
{
vector<ciuperca>::iterator it;
ciuperca pzm;
pzm . l = i; pzm . c = j;
bool FUTUI = binary_search (v.begin (), v.end (), pzm, cmp);
return !FUTUI;
}
int main()
{
FILE *fin, *fout;
int i, j, k;
ciuperca e;
fin = fopen("padure2.in", "r");
fout = fopen("padure2.out", "w");
fscanf(fin, "%d %d %d", &N, &M, &C);
for(i=1; i<=C; i++)
{
fscanf(fin, "%d %d", &e.l, &e.c);
v.push_back(e);
}
sort (v.begin (), v.end (), cmp);
a[0][M] = a[1][M] = 1;
for(i=M-1; i>0; i--) a[N%2][i] = 1;
for(i=N-1; i>0; i--)
{
k = (i+1)%2;
for(j=M-1; j>0; j--)
{
if(isTree(i, j))
a[i%2][j] = ( a[k][j] + a[i%2][j+1] ) % MOD;
else
a[i%2][j] = 0;
}
}
fprintf(fout, "%d\n", a[1][1]);
fclose(fin);
fclose(fout);
v.clear();
return 0;
}