#include<stdio.h>
int n,m;
int b[20];
int cmd[420][4];
int ans[420];
int c[20];
int d[20];
void f(int x){
if(x==n){
int i;
for(i=0;i<n;i++){
d[i]=c[i];
}
for(i=0;i<m;i++){
if(cmd[i][0]==0){
d[cmd[i][1]]=d[cmd[i][2]]+d[cmd[i][3]];
}
if(cmd[i][0]==1){
d[cmd[i][1]]=d[cmd[i][2]]^d[cmd[i][3]];
}
if(cmd[i][0]==2){
d[cmd[i][1]]=d[cmd[i][2]]+cmd[i][3];
}
if(cmd[i][0]==3){
d[cmd[i][1]]=d[cmd[i][2]]^cmd[i][3];
}
}
for(i=0;i<n;i++){
ans[i]+=d[i];
}
return;
}
for(c[x]=0;c[x]<4;c[x]++){
if(c[x]==b[x])continue;
f(x+1);
}
}
int main(){
int i,j;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++){
scanf("%d",&b[i]);
}
for(i=0;i<m;i++){
scanf("%d%d%d%d",&cmd[i][0],&cmd[i][1],&cmd[i][2],&cmd[i][3]);
}
f(0);
for(i=0;i<n;i++){
printf("%d ",ans[i]%4);
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
1092 KB |
Output is correct |
2 |
Correct |
0 ms |
1092 KB |
Output is correct |
3 |
Correct |
0 ms |
1092 KB |
Output is correct |
4 |
Incorrect |
0 ms |
1092 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Halted |
0 ms |
0 KB |
- |