Pagini recente » Cod sursa (job #580357) | Cod sursa (job #2426522) | Cod sursa (job #2672873) | Cod sursa (job #2314835) | Cod sursa (job #2740711)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
const int MMAX = 1000000;
const int MODULO = 2000003;
vector<pair<int, int>> v;
int dp[2][1 + MMAX];
bool comp(const pair<int, int>& a, const pair<int, int>& b)
{
if (a.second == b.second)
return a.first < b.first;
return a.second < b.second;
}
int main()
{
ifstream in("padure2.in");
ofstream out("padure2.out");
int n, m, c;
in >> n >> m >> c;
for (int i = 1; i <= c; i++)
{
int x, y;
in >> x >> y;
v.emplace_back(x, y);
}
sort(v.begin(), v.end(), comp);
int col = 1;
dp[1 - col][1] = 1;
int index = 0;
for (int j = 1; j <= m; j++, col = 1 - col)
{
for (int i = 1; i <= n; i++)
{
if (index < v.size() && i == v[index].first && j == v[index].second)
{
dp[col][i] = 0;
index++;
}
else
{
dp[col][i] = (dp[1 - col][i] + dp[col][i - 1]) % MODULO;
}
}
}
out << dp[1 - col][n] << '\n';
return 0;
}