Submission #627341

# Submission time Handle Problem Language Result Execution time Memory
627341 2022-08-12T13:07:58 Z iomoon191 쿼터너리 컴퓨터 (kriii3_Z) C++17
31 / 126
4000 ms 1996 KB
#include <bits/stdc++.h>
#define all(a) (a).begin(), (a).end()
#define sz(a) (int) (a.size())
#define pb push_back
#define fi first
#define se second
#define For(i, a, b) for(int i = a; i <= b; i++)
#define roF(i, a, b) for(int i = a; i >= b; i--)
using namespace std;
using ll = long long;
// #define int ll
using vi = vector<int>;
using pi = pair<int, int>;
const int N = 100005;
const int inf = 0x3f3f3f3f;
mt19937 rng(random_device {}()); 
int rand(int a){
	return rng() % a;
}
namespace Rec{
	template<class Fun>
	class y_combinator_result{
		Fun fun_;
	public:
		template<class T>
		explicit y_combinator_result(T &&fun): fun_(std::forward<T>(fun)){}
		template<class ...Args>
		decltype(auto) operator()(Args &&...args){
			return fun_(std::ref(*this), std::forward<Args>(args)...);
		}
	};
	template<class Fun>
	decltype(auto) y_combinator(Fun &&fun){
		return y_combinator_result<std::decay_t<Fun>>(std::forward<Fun>(fun));
	}
}
int n, m;
vi a1(20), a2(20), cnt(20), f(20), type(N), x(N), y(N), z(N);

void rmain(){
	cin >> n >> m;
	For(i, 0, n - 1) cin >> f[i];
	For(i, 0, m - 1) cin >> type[i] >> x[i] >> y[i] >> z[i];
	function<void(int)> _solve = [&](int pos){
		if(pos == n){
			For(i, 0, n - 1) a2[i] = a1[i];
			For(i, 0, m - 1){
				if(type[i] == 0) a2[x[i]] = a2[y[i]] + a2[z[i]];
				if(type[i] == 1) a2[x[i]] = a2[y[i]] ^ a2[z[i]];
				if(type[i] == 2) a2[x[i]] = a2[y[i]] + z[i];
				if(type[i] == 3) a2[x[i]] = a2[y[i]] ^ z[i];
				a2[x[i]] &= 3;
			}
			For(i, 0, n - 1) cnt[i] = (cnt[i] + a2[i]) % 4;
			return;
		}
		For(i, 0, 3){
			if(i == f[pos]) continue;
			a1[pos] = i;
			_solve(pos + 1);
			a1[pos] = 0;
		}
	}; _solve(0);
	cnt.resize(n);
	for(auto &i : cnt) cout << i << " ";
}

signed main(int argc, char *argv[]){
	iostream::sync_with_stdio(0);
	int T = 1; 
	while(T--) rmain();
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 1876 KB Output is correct
2 Correct 1 ms 1876 KB Output is correct
3 Correct 1 ms 1876 KB Output is correct
4 Correct 1 ms 1876 KB Output is correct
5 Correct 1 ms 1876 KB Output is correct
6 Correct 1 ms 1876 KB Output is correct
7 Correct 1 ms 1876 KB Output is correct
8 Correct 1 ms 1876 KB Output is correct
9 Correct 1 ms 1876 KB Output is correct
10 Correct 1 ms 1876 KB Output is correct
11 Correct 1 ms 1876 KB Output is correct
12 Correct 3 ms 1876 KB Output is correct
13 Correct 3 ms 1876 KB Output is correct
14 Correct 4 ms 1908 KB Output is correct
15 Correct 187 ms 1892 KB Output is correct
16 Correct 185 ms 1996 KB Output is correct
17 Correct 1655 ms 1892 KB Output is correct
18 Correct 1514 ms 1896 KB Output is correct
19 Correct 1647 ms 1912 KB Output is correct
20 Correct 1858 ms 1892 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 4016 ms 1880 KB Time limit exceeded
2 Halted 0 ms 0 KB -