Cod sursa(job #1709795)

Utilizator vand_bot_la_PAUPB Mardale Mocanu Vasilache vand_bot_la_PA Data 28 mai 2016 13:53:56
Problema Padure2 Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.01 kb
#include <stdio.h>
#include <string.h>
#include <set>

using namespace std;

set< pair<int, int> > mushrooms;
int n, m;
int v1[1000005], v2[1000005];

int main (void) {
	freopen("padure2.in", "r", stdin);
	freopen("padure2.out", "w", stdout);

	scanf("%d %d", &n, &m);

	int nr_ciup;
	scanf("%d", &nr_ciup);

	for (int i = 0; i < nr_ciup; ++i) {
		int x, y;
		scanf("%d %d", &x, &y);
		mushrooms.insert(make_pair(x, y));
	}

	v2[1] = 1;
	if (mushrooms.find(make_pair(1, 1)) != mushrooms.end()) {
		v2[1] = 0;
	}

	for (int i = 2; i <= n; ++i) {
		if (v2[i - 1] == 0 || mushrooms.find(make_pair(i, 1)) != mushrooms.end()) {
			v2[i] = 0;
		} else  {
			v2[i] = 1;
		}
	}

	for (int j = 2; j <= m; ++j) {
		v1[1] = 1;
		if (mushrooms.find(make_pair(1, j)) != mushrooms.end()) {
			v1[1] = 0;
		}

		for (int i = 2; i <= n; ++i) {
			if (mushrooms.find(make_pair(i, j)) != mushrooms.end()) {
				v1[i] = 0;
			} else {
				v1[i] = v1[i - 1] + v2[i];
			}
		}

		memcpy(v2, v1, (n + 1) * sizeof(int));
	}

	printf("%d", v2[n]);

	return 0;
}