显示原始代码
#define __AVX__ 1
#define __AVX2__ 1
#pragma GCC target("avx2,bmi,fma,popcnt")
#include <bits/stdc++.h>
#include <immintrin.h>
using namespace std;
using vec = __m256i;
#define v32(x) _mm256_##x
const int maxn = 2e5;
alignas(32) int a[maxn];
int ptr = 0;
signed main() {
ios::sync_with_stdio(0);
int n;
cin >> n;
int ans = 0;
vec tmp = v32(set1_epi32)(1);
for (int i = 1; i <= n; ++i) {
short mod;
cin >> mod;
if (mod == 1) {
vec v1 = v32(set1_epi32)(0);
int i = 0;
#pragma unroll 8
for (; i < ptr - 8; i += 8) {
vec v0 = v32(load_si256)((vec*)(a + i));
v0 = v32(add_epi32)(v0, tmp);
v1 = v32(xor_si256)(v0, v1);
v32(store_si256)((vec*)(a + i), v0);
}
ans = 0;
for (; i < ptr; ++i) {
++a[i];
ans ^= a[i];
}
int* p = (int*)(&v1);
for (int i = 0; i < 8; ++i) {
ans ^= p[i];
}
} else {
int x;
cin >> x;
a[ptr] = x;
++ptr;
ans ^= x;
}
cout << ans << endl;
}
return 0;
}