Submission #53068439
Source Code Expand
#include <bits/stdc++.h> using namespace std; vector<int> min_fac, num, A; vector<vector<pair<int, int>>> new_factor; vector<vector<int>> factor; int N, Q, danger = 0; void add(int i) { for(auto kv : new_factor[i]) { int k = kv.first, v = kv.second; num[k] += v; if(num[k] % 3 != 0 && (num[k] - v) % 3 == 0) danger++; if(num[k] % 3 == 0 && (num[k] - v) % 3 != 0) danger--; } } void del(int i) { for(auto kv : new_factor[i]) { int k = kv.first, v = kv.second; num[k] -= v; if(num[k] % 3 == 0 && (num[k] + v) % 3 != 0) danger--; if(num[k] % 3 != 0 && (num[k] + v) % 3 == 0) danger++; } } void Eratosthenes() { int n = *max_element(A.begin(), A.end()); vector<bool> primes(n + 1, true); primes[0] = primes[1] = false; for(int i = 2; i <= n; i++) { if(primes[i]) { min_fac[i] = i; for(int j = 2 * i; j <= n; j += i) { primes[j] = false; if(min_fac[j] == -1) min_fac[j] = i; } } } } void Factorization() { for(int i = 0; i < N; i++) { int now = A[i]; while(true) { if(now == 1) break; if(min_fac[now] == now) { factor[i].push_back(now); break; } else { factor[i].push_back(min_fac[now]); now /= min_fac[now]; } } } } int main() { cin >> N >> Q; int block = int(N / pow(Q, 0.5)) + 1; vector<vector<pair<int, pair<int, int>>>> queries((int)(pow(Q, 0.5)+1)); A.resize(N); for(int i = 0; i < N; i++) cin >> A[i]; for(int i = 0; i < Q; i++) { int L, R; cin >> L >> R; L--; R--; // 0-indexed queries[L / block].push_back(make_pair(i, make_pair(L, R))); } min_fac = vector<int>(*max_element(A.begin(), A.end()) + 1, -1); factor = vector<vector<int>>(N); Eratosthenes(); Factorization(); new_factor.resize(N); for(int i = 0; i < N; i++) { map<int, int> d; for(int j : factor[i]) d[j]++; for(auto kv : d) new_factor[i].push_back(kv); } vector<int> ans(Q); int left = 0, right = 0; num = vector<int>(*max_element(A.begin(), A.end()) + 1, 0); danger = 0; for(int ind = 0; ind < queries.size(); ind++) { sort(queries[ind].begin(), queries[ind].end(), [&](pair<int, pair<int, int>> a, pair<int, pair<int, int>> b) { if(ind % 2 == 0) return a.second.second < b.second.second; else return a.second.second > b.second.second; }); for(auto query : queries[ind]) { int i = query.first, l = query.second.first, r = query.second.second; while(right <= r) { add(right); right++; } while(l < left) { left--; add(left); } while(r + 1 < right) { right--; del(right); } while(left < l) { del(left); left++; } ans[i] = (danger == 0); } } for(int res : ans) cout << (res ? "Yes" : "No") << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | G - Cubic? |
User | ryusuke_h |
Language | C++ 20 (gcc 12.2) |
Score | 600 |
Code Size | 3553 Byte |
Status | AC |
Exec Time | 2793 ms |
Memory | 47188 KiB |
Compile Error
Main.cpp: In function ‘int main()’: Main.cpp:100:26: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::vector<std::pair<int, std::pair<int, int> > > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] 100 | for(int ind = 0; ind < queries.size(); ind++) { | ~~~~^~~~~~~~~~~~~~~~
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 600 / 600 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt |
All | sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt, test_59.txt, test_60.txt, test_61.txt, test_62.txt, test_63.txt, test_64.txt, test_65.txt, test_66.txt, test_67.txt, test_68.txt, test_69.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 3 ms | 3644 KiB |
test_01.txt | AC | 8 ms | 7960 KiB |
test_02.txt | AC | 896 ms | 22880 KiB |
test_03.txt | AC | 152 ms | 10440 KiB |
test_04.txt | AC | 500 ms | 25460 KiB |
test_05.txt | AC | 949 ms | 30424 KiB |
test_06.txt | AC | 94 ms | 13456 KiB |
test_07.txt | AC | 239 ms | 19404 KiB |
test_08.txt | AC | 1827 ms | 30028 KiB |
test_09.txt | AC | 39 ms | 12640 KiB |
test_10.txt | AC | 327 ms | 25852 KiB |
test_11.txt | AC | 900 ms | 31164 KiB |
test_12.txt | AC | 403 ms | 22032 KiB |
test_13.txt | AC | 181 ms | 24808 KiB |
test_14.txt | AC | 1469 ms | 36192 KiB |
test_15.txt | AC | 343 ms | 23096 KiB |
test_16.txt | AC | 605 ms | 27096 KiB |
test_17.txt | AC | 619 ms | 23556 KiB |
test_18.txt | AC | 179 ms | 13540 KiB |
test_19.txt | AC | 355 ms | 25712 KiB |
test_20.txt | AC | 359 ms | 11208 KiB |
test_21.txt | AC | 706 ms | 23940 KiB |
test_22.txt | AC | 1077 ms | 34604 KiB |
test_23.txt | AC | 1531 ms | 34448 KiB |
test_24.txt | AC | 728 ms | 31368 KiB |
test_25.txt | AC | 1057 ms | 27568 KiB |
test_26.txt | AC | 1525 ms | 28964 KiB |
test_27.txt | AC | 719 ms | 26560 KiB |
test_28.txt | AC | 1058 ms | 26772 KiB |
test_29.txt | AC | 1522 ms | 29116 KiB |
test_30.txt | AC | 722 ms | 29348 KiB |
test_31.txt | AC | 1067 ms | 32340 KiB |
test_32.txt | AC | 1527 ms | 28848 KiB |
test_33.txt | AC | 813 ms | 41144 KiB |
test_34.txt | AC | 817 ms | 41068 KiB |
test_35.txt | AC | 812 ms | 41328 KiB |
test_36.txt | AC | 1074 ms | 37764 KiB |
test_37.txt | AC | 1145 ms | 41108 KiB |
test_38.txt | AC | 2079 ms | 31276 KiB |
test_39.txt | AC | 387 ms | 17556 KiB |
test_40.txt | AC | 1474 ms | 37764 KiB |
test_41.txt | AC | 791 ms | 42632 KiB |
test_42.txt | AC | 1077 ms | 37972 KiB |
test_43.txt | AC | 1139 ms | 40812 KiB |
test_44.txt | AC | 2793 ms | 40880 KiB |
test_45.txt | AC | 506 ms | 30004 KiB |
test_46.txt | AC | 954 ms | 37076 KiB |
test_47.txt | AC | 1691 ms | 41224 KiB |
test_48.txt | AC | 1073 ms | 37892 KiB |
test_49.txt | AC | 1139 ms | 40960 KiB |
test_50.txt | AC | 2074 ms | 31280 KiB |
test_51.txt | AC | 534 ms | 37892 KiB |
test_52.txt | AC | 1472 ms | 37748 KiB |
test_53.txt | AC | 2355 ms | 41324 KiB |
test_54.txt | AC | 1075 ms | 37944 KiB |
test_55.txt | AC | 1143 ms | 41160 KiB |
test_56.txt | AC | 2792 ms | 40904 KiB |
test_57.txt | AC | 642 ms | 47188 KiB |
test_58.txt | AC | 980 ms | 37064 KiB |
test_59.txt | AC | 1621 ms | 41436 KiB |
test_60.txt | AC | 1071 ms | 37960 KiB |
test_61.txt | AC | 1145 ms | 41088 KiB |
test_62.txt | AC | 1250 ms | 28928 KiB |
test_63.txt | AC | 769 ms | 42124 KiB |
test_64.txt | AC | 1474 ms | 37708 KiB |
test_65.txt | AC | 2367 ms | 41264 KiB |
test_66.txt | AC | 1077 ms | 37904 KiB |
test_67.txt | AC | 1143 ms | 40768 KiB |
test_68.txt | AC | 2081 ms | 31316 KiB |
test_69.txt | AC | 1030 ms | 45520 KiB |