Untitled
unknown
c_cpp
3 years ago
1.2 kB
6
Indexable
#include <bits/stdc++.h> using namespace std; int main() { int n, m; scanf("%d%d",&n,&m); int s=pow(2,n); int* all[18]; for (int i=0; i<18; i++) { all[i]=(int*)malloc(4*131072); } for (int i=0; i<s; i++) {int x; scanf("%d",&x); all[n][i]=x; } bool orr=true; for (int i=n; i>0; i--){ int l=pow(2, i); for (int j=0; j<l; j+=2) { if (orr) all[i-1][j/2] = all[i][j] | all[i][j+1]; else all[i-1][j/2] = all[i][j] ^ all[i][j+1]; } orr=!orr; } //print /* for (int i=0; i<=n; i++) { int ss=pow(2, i); for (int k=0; k<ss; k++) printf("%d ", all[i][k]); printf("\n\n print korlam \n\n"); }*/ for (int i=0; i<m; i++) { int p, b; scanf("%d%d",&p,&b); p--; all[n][p]=b; orr=true; for (int j=n; j>0; j--) {int a,b; if (p%2==0) {a=p; b=p+1;} else {b=p; a=p-1;} p=p/2; if (orr) all[j-1][p]=all[j][a] | all[j][b]; else all[j-1][p]=all[j][a] ^ all[j][b]; orr=!orr; } printf("%d\n", all[0][0]); } }
Editor is loading...