제출 #359318

#제출 시각아이디문제언어결과실행 시간메모리
359318jhnah917Examination (JOI19_examination)C++14
2 / 100
3059 ms2028 KiB
/****************************** Author: jhnah917(Justice_Hui) g++ -std=c++17 -DLOCAL ******************************/ #pragma GCC optimize ("O3") #pragma GCC optimize ("unroll-loops") #pragma GCC target ("avx,avx2,fma") #include <bits/stdc++.h> #include <immintrin.h> using namespace std; using uint = unsigned; using ll = long long; using ull = unsigned long long; constexpr int SZ = 100000; union Fuck{ __m256i vec; int arr[8]; }; int N, Q; alignas(256) Fuck S[SZ/8], T[SZ/8], U[SZ/8], Flags; __m256i _mm256_cmpgeq_epi32(__m256i a, __m256i b){ __m256i ret = _mm256_cmpeq_epi32(a, b); ret = _mm256_or_si256(ret, _mm256_cmpgt_epi32(a, b)); return ret; } __m256i _mm256_cmpgeq_epi32(__m256i a, unsigned b){ return _mm256_cmpgeq_epi32(a, _mm256_set1_epi32(b)); } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> N >> Q; for(int i=0; i<SZ/8; i++) S[i].vec = T[i].vec = _mm256_set1_epi32(-1e9); for(int i=0; i<N; i++) cin >> S[i>>3].arr[i&7] >> T[i>>3].arr[i&7]; for(int i=0; i<SZ/8; i++){ U[i].vec = _mm256_add_epi32(S[i].vec, T[i].vec); } for(int i=0; i<Q; i++){ int x, y, z, ans = 0; cin >> x >> y >> z; Fuck cnt; cnt.vec = _mm256_set1_epi32(0); for(int j=0; j<SZ/8; j++){ __m256i X = _mm256_cmpgeq_epi32(S[j].vec, x); __m256i Y = _mm256_cmpgeq_epi32(T[j].vec, y); __m256i Z = _mm256_cmpgeq_epi32(U[j].vec, z); Flags.vec = _mm256_and_si256(_mm256_and_si256(X, _mm256_and_si256(Y, Z)), _mm256_set1_epi32(1)); cnt.vec = _mm256_add_epi32(cnt.vec, Flags.vec); } for(int j=0; j<8; j++) ans += cnt.arr[j]; cout << ans << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...