Untitled

 avatar
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...