Cod sursa(job #2740711)

Utilizator Razvan48Capatina Razvan Nicolae Razvan48 Data 13 aprilie 2021 22:16:40
Problema Padure2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva ICPC Marime 1.18 kb
#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;
}