#include <bits/stdc++.h>
using namespace std;
int sir[200001] , suma[2][200001];
int main ()
{
ios :: sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int lungime , numar_operatii;
cin >> lungime >> numar_operatii;
for (int indice = 1 ; indice <= lungime ; indice++)
{
cin >> sir[indice];
suma[indice & 1][indice] ^= sir[indice];
if (indice + (indice & -indice) <= lungime)
{
suma[0][indice + (indice & -indice)] ^= suma[0][indice];
suma[1][indice + (indice & -indice)] ^= suma[1][indice];
}
}
while (numar_operatii--)
{
int8_t tip;
cin >> tip;
if (tip == '1')
{
int indice , valoare;
cin >> indice >> valoare;
valoare ^= sir[indice];
for (int __indice = indice ; __indice <= lungime ; __indice += (__indice & -__indice))
{ suma[indice & 1][__indice] ^= valoare; }
sir[indice] ^= valoare;
}
else
{
int stanga , dreapta;
cin >> stanga >> dreapta;
if ((dreapta - stanga + 1) % 2 == 0)
{ cout << "0\n"; continue; }
stanga--;
int __suma = 0;
const int __indice = (dreapta & 1);
while (stanga != dreapta) {
if (stanga < dreapta) { __suma ^= suma[__indice][dreapta]; dreapta ^= (dreapta & -dreapta); }
else { __suma ^= suma[__indice][stanga]; stanga ^= (stanga & -stanga); }
}
cout << __suma << '\n';
}
}
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |