Codeforces Round #139 (Div. 2) A : Dice Tower

問題概要

サイコロ(2種類ある)のタワーがある。見えている2面とてっぺんの面が与えられるので矛盾がないか判定する問題。

解法

てっぺんの数とその7の補数が側面で見えたらダメ。見えている2面の和が7になったらダメ。

acceptされたコード

#include <cstdio>
using namespace std;

const int MAX_N = 100;

int N, top;
int xs[MAX_N], ys[MAX_N];

void init() {
	scanf("%d%d", &N, &top);
	for (int i = 0; i < N; ++i) {
		scanf("%d%d", xs+i, ys+i);
	}
}

bool solve() {
	bool ok = true;
	for (int i = 0; i < N; ++i) {
		ok &= !(xs[i] == ys[i] || xs[i] + ys[i] == 7);
		ok &= !(xs[i] == top || xs[i] == 7 - top);
		ok &= !(ys[i] == top || ys[i] == 7 - top);
	}
	return ok;
}

int main() {
	init();
	puts(solve() ? "YES" : "NO");
	return 0;
}