Cod sursa(job #1709787)

Utilizator UTCN_rachetaUTCN Pocol Rogoz Oltean UTCN_racheta Data 28 mai 2016 13:52:44
Problema Padure2 Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.09 kb
#include <cstdio>
#include <vector>
#define MOD 2000003

using namespace std;
int N, M, C;

struct ciuperca
{
    int l,c;
};
vector<ciuperca> v;
int a[2][1000001];

bool isTree(int i, int j)
{
    vector<ciuperca>::iterator it;
    for(it=v.begin(); it!=v.end(); it++)
    {
        if(it->l == i && it->c == j) return 0;
    }

    return 1;
}

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);
    }

    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;
}