Pagini recente » Cod sursa (job #2517599) | Cod sursa (job #1010020) | Cod sursa (job #1005833) | Cod sursa (job #1916484) | Cod sursa (job #1709549)
#include <iostream>
#include <fstream>
#include <utility>
#include <set>
#include <unordered_set>
#include <vector>
#include <unordered_map>
#include <set>
using namespace std;
ifstream in("padure2.in");
ofstream out("padure2.out");
int main() {
int n, m, mushes;
unordered_map<int, vector<int> > mushrooms;
in >> n >> m >> mushes;
int x, y;
for (int i = 0; i < mushes; ++i) {
in >> x >> y;
--x; --y;
mushrooms[x].push_back(y);
if ((x == 1) && (y == 1)) {
out << "0\n";
return 0;
}
if ((x == n) && (y == m)) {
out << "0\n";
return 0;
}
}
int rows[2][m];
int i_m, p_r = 0;
rows[0][0] = 1;
for (int j = 1; j < m; ++j)
rows[0][j] = -1;
for (int i = 0; i < mushrooms[0].size(); ++i)
rows[0][mushrooms[0][i]] = 0;
for (int i = 1; i < m; ++i)
if (rows[0][i] != 0)
rows[0][i] = rows[0][i - 1];
for (int i = 1; i < n; ++i) {
i_m = p_r ^ 1;
for (int j = 0; j < m; ++j)
rows[i_m][j] = -1;
for (int j = 0; j < mushrooms[i].size(); ++j)
rows[i_m][mushrooms[i][j]] = 0;
if (rows[i_m][0] == -1)
rows[i_m][0] = rows[p_r][0];
for (int j = 1; j < m; ++j) {
if(rows[i_m][j] != 0)
rows[i_m][j] = (rows[i_m][j - 1] + rows[p_r][j]) % 2000003;
}
p_r ^= 1;
}
out << rows[p_r][m - 1] << '\n';
return 0;
}