Submission #24939130


Source Code Expand

#include "bits/stdc++.h"

#define int long long

using namespace std;
using ll = long long;
using P = pair<ll, ll>;
const ll INF = (1LL << 61);
ll mod = 1000000007;
struct mint {
	ll x; // typedef long long ll;
	mint(ll x = 0) :x((x%mod + mod) % mod) {}
	mint operator-() const { return mint(-x); }
	mint& operator+=(const mint a) {
		if ((x += a.x) >= mod) x -= mod;
		return *this;
	}
	mint& operator-=(const mint a) {
		if ((x += mod - a.x) >= mod) x -= mod;
		return *this;
	}
	mint& operator*=(const mint a) {
		(x *= a.x) %= mod;
		return *this;
	}
	mint operator+(const mint a) const {
		mint res(*this);
		return res += a;
	}
	mint operator-(const mint a) const {
		mint res(*this);
		return res -= a;
	}
	mint operator*(const mint a) const {
		mint res(*this);
		return res *= a;
	}
	mint pow(ll t) const {
		if (!t) return 1;
		mint a = pow(t >> 1);
		a *= a;
		if (t & 1) a *= *this;
		return a;
	}

	// for prime mod
	mint inv() const {
		return pow(mod - 2);
	}
	mint& operator/=(const mint a) {
		return (*this) *= a.inv();
	}
	mint operator/(const mint a) const {
		mint res(*this);
		return res /= a;
	}
};
istream& operator>>(istream& is, mint& a) { return is >> a.x; }
ostream& operator<<(ostream& os, const mint& a) { return os << a.x; }
int N, Q;
int x[55], y[55], z[55], w[55];

signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin >> N >> Q;
	for (int i = 0; i < Q; i++) {
		cin >> x[i] >> y[i] >> z[i] >> w[i]; x[i]--; y[i]--; z[i]--;
	}
	mint ans = 1;
	for (int i = 0; i < 60; i++) {
		mint cnt = 0;
		for (int bit = 0; bit < (1 << N); bit++) {
			vector<int>now(N);
			for (int j = 0; j < N; j++) {
				if (bit & (1LL << j)) {
					now[j] = 1;
				}
			}
			bool ok = true;
			for (int j = 0; j < Q; j++) {
				int t = now[x[j]];
				t |= now[y[j]];
				t |= now[z[j]];
				int t2 = (int)(w[j] & (1LL << i));
				if (t2)t2 = 1;
				if (t != t2)ok = false;
				
			}
			if (ok) {
				cnt += 1;
			}
		}
		ans *= cnt;
	}
	cout << ans << endl;
	return 0;


}

Submission Info

Submission Time
Task 086 - Snuke's Favorite Arrays(★5)
User Example
Language C++ (GCC 9.2.1)
Score 5
Code Size 2094 Byte
Status AC
Exec Time 49 ms
Memory 3612 KiB

Judge Result

Set Name All
Score / Max Score 5 / 5
Status
AC × 30
Set Name Test Cases
All 00_sample_00.txt, 00_sample_01.txt, 10_random_large_00.txt, 10_random_large_01.txt, 10_random_large_02.txt, 11_random_max_00.txt, 11_random_max_01.txt, 11_random_max_02.txt, 20_exists_large_00.txt, 20_exists_large_01.txt, 20_exists_large_02.txt, 20_exists_large_03.txt, 20_exists_large_04.txt, 20_exists_large_05.txt, 20_exists_large_06.txt, 20_exists_large_07.txt, 20_exists_large_08.txt, 20_exists_large_09.txt, 21_exists_max_00.txt, 21_exists_max_01.txt, 21_exists_max_02.txt, 21_exists_max_03.txt, 21_exists_max_04.txt, 21_exists_max_05.txt, 21_exists_max_06.txt, 21_exists_max_07.txt, 21_exists_max_08.txt, 21_exists_max_09.txt, 80_corner_00.txt, 81_corner_00.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 7 ms 3612 KiB
00_sample_01.txt AC 4 ms 3528 KiB
10_random_large_00.txt AC 13 ms 3488 KiB
10_random_large_01.txt AC 13 ms 3472 KiB
10_random_large_02.txt AC 5 ms 3484 KiB
11_random_max_00.txt AC 41 ms 3492 KiB
11_random_max_01.txt AC 40 ms 3472 KiB
11_random_max_02.txt AC 47 ms 3496 KiB
20_exists_large_00.txt AC 24 ms 3464 KiB
20_exists_large_01.txt AC 2 ms 3424 KiB
20_exists_large_02.txt AC 10 ms 3424 KiB
20_exists_large_03.txt AC 3 ms 3424 KiB
20_exists_large_04.txt AC 18 ms 3488 KiB
20_exists_large_05.txt AC 6 ms 3532 KiB
20_exists_large_06.txt AC 33 ms 3424 KiB
20_exists_large_07.txt AC 13 ms 3524 KiB
20_exists_large_08.txt AC 2 ms 3576 KiB
20_exists_large_09.txt AC 3 ms 3472 KiB
21_exists_max_00.txt AC 47 ms 3548 KiB
21_exists_max_01.txt AC 45 ms 3540 KiB
21_exists_max_02.txt AC 47 ms 3548 KiB
21_exists_max_03.txt AC 46 ms 3524 KiB
21_exists_max_04.txt AC 49 ms 3484 KiB
21_exists_max_05.txt AC 47 ms 3552 KiB
21_exists_max_06.txt AC 47 ms 3548 KiB
21_exists_max_07.txt AC 47 ms 3468 KiB
21_exists_max_08.txt AC 45 ms 3528 KiB
21_exists_max_09.txt AC 47 ms 3540 KiB
80_corner_00.txt AC 46 ms 3468 KiB
81_corner_00.txt AC 47 ms 3468 KiB