답안 #15338

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
15338 2015-07-12T06:21:18 Z skeksk91 쿼터너리 컴퓨터 (kriii3_Z) C++
0 / 126
0 ms 1084 KB
#include <stdio.h>
#include <stack>
#include <string.h>
#include <string>
#include <vector>
#include <queue>
#include <limits.h>
#include <algorithm>
#define ll long long
int n, m, v[20], f[20], page[20], inst[20], ret[20], a[20], b[20], u[20];
int plus[4][4] ={{0,1,2,3},{1,2,3,0},{2,3,0,1},{3,0,1,2}};
int xor2[4][4] = {{0,1,2,3},{1,0,3,2},{2,3,0,1},{3,2,1,0}};

void func(int here){
	if(here==n){
		//for(int i = 0 ; i < n; i++){
		//	printf("%d ", v[i]);
		//}
		//printf("\n");
		for(int i = 0; i < n; i++){
			u[i] = v[i];
		}
		for(int i = 0; i < m; i++){
			if(inst[i]==0){
				u[ret[i]] = plus[u[a[i]]][u[b[i]]];
			}
			else if(inst[i]==1){
				u[ret[i]] = xor2[u[a[i]]][u[b[i]]];
			}
			else if(inst[i]==2){
				u[ret[i]] = plus[u[a[i]]][b[i]];
			}
			else{
				u[ret[i]] = xor2[u[a[i]]][b[i]];
			}
		}
		for(int i = 0; i < n; i++){
			page[i] += u[i];
		}
		return;
	}
	for(int i = 0; i < 4; i++){
		if(f[here] != i){
			v[here] = i;
			func(here+1);
		}
	}
}
int main(){
	scanf("%d%d", &n,&m);
	for(int i = 0 ; i < n; i++)
		scanf("%d", &f[i]);
	for(int i = 0; i < m; i++){
		scanf("%d%d%d%d", &inst[i], &ret[i], &a[i], &b[i]);
	}
	func(0);
	for(int i = 0; i < n; i++){
		printf("%d ",page[i]%4);
	}
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 1084 KB Output is correct
2 Incorrect 0 ms 1084 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Halted 0 ms 0 KB -