Submission #52130024
Source Code Expand
#include<iostream>
#include<string>
#include<queue>
#include<vector>
#include<cassert>
#include<random>
#include<set>
#include<map>
#include<cassert>
#include<unordered_map>
#include<bitset>
#include<numeric>
#include<algorithm>
using namespace std;
typedef long long ll;
const int inf=1<<30;
const ll INF=1LL<<62;
typedef pair<int,int> P;
typedef pair<int,P> PP;
vector<P> divisor(ll n){
map<ll,ll> mp;
for(ll d=2;d*d<=n;d++){
ll cnt=0;
while(n%d==0){
n/=d;
cnt++;
}
cnt%=3;
if(cnt>0){
mp[d]+=cnt;
}
}
if(n>1){
mp[n]++;
n/=n;
}
vector<P> res;
for(auto [val,num]:mp){
res.emplace_back(val,num);
}
return res;
}
int main(){
int N,Q;
cin>>N>>Q;
vector<ll> A(N);
vector<vector<P>> cnt(N);
for(int i=0;i<N;i++){
cin>>A[i];
cnt[i]=divisor(A[i]);
}
/*
for(int i=0;i<N;i++){
cout<<"i="<<i<<endl;
for(auto [v,num]:cnt[i]){
cout<<"v="<<v<<",num="<<num<<endl;
}
}
*/
vector<P> ranges;
vector<int> L(Q),R(Q);
for(int q=0;q<Q;q++){
cin>>L[q]>>R[q];
L[q]--;
//[L[q],R[q])
ranges.emplace_back(L[q],R[q]);
}
vector<int> order(Q);
iota(order.begin(),order.end(),0);
const int D=max((int)sqrt(2*N),1);
sort(order.begin(),order.end(),
[&](const int i,const int j){
int ri=R[i]/D;
int rj=R[j]/D;
if(ri!=rj){
return ri<rj;
}else{
return L[i]<L[j];
}
});
const int MAXA=1000000;
vector<int> counter(MAXA+1,0);
bool flag=true;
int cnt_cubic=0;
auto add=[&](int idx){
//idxの追加
for(auto [val,num]:cnt[idx]){
int pre=counter[val];
counter[val]+=num;
counter[val]%=3;
if(pre==0 && counter[val]>0){
cnt_cubic++;
}
else if(pre>0 && counter[val]==0){
cnt_cubic--;
}
}
};
auto del=[&](int idx){
//idxの削除
for(auto [val,num]:cnt[idx]){
int pre=counter[val];
counter[val]-=num;
counter[val]+=3;
counter[val]%=3;
if(pre==0 && counter[val]>0){
cnt_cubic++;
}
else if(pre>0 && counter[val]==0){
cnt_cubic--;
}
}
};
vector<bool> ans(Q);
int left=0,right=0;
for(int q=0;q<Q;q++){
//cout<<"ord["<<q<<"]="<<order[q]<<endl;
//[nl,nr)
int nl=L[order[q]],nr=R[order[q]];
while(nl<left){
//今見ている先のleft(つまりleft-1)を含ませる
left--;
add(left);
}
while(left<nl){
del(left);
left++;
}
while(nr<right){
right--;
del(right);
}
while(right<nr){
add(right);
right++;
}
ans[order[q]]=(cnt_cubic==0);
}
for(int q=0;q<Q;q++){
cout<<(ans[q]?"Yes":"No")<<endl;
}
}
Submission Info
| Submission Time | |
|---|---|
| Task | G - Cubic? |
| User | HIcoder |
| Language | C++ 20 (gcc 12.2) |
| Score | 600 |
| Code Size | 3417 Byte |
| Status | AC |
| Exec Time | 2993 ms |
| Memory | 32828 KiB |
Compile Error
Main.cpp: In function ‘int main()’:
Main.cpp:98:10: warning: unused variable ‘flag’ [-Wunused-variable]
98 | bool flag=true;
| ^~~~
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 | 6984 KiB |
| test_01.txt | AC | 3 ms | 6972 KiB |
| test_02.txt | AC | 861 ms | 18672 KiB |
| test_03.txt | AC | 184 ms | 9716 KiB |
| test_04.txt | AC | 417 ms | 14100 KiB |
| test_05.txt | AC | 897 ms | 19168 KiB |
| test_06.txt | AC | 79 ms | 8508 KiB |
| test_07.txt | AC | 276 ms | 12160 KiB |
| test_08.txt | AC | 1691 ms | 23164 KiB |
| test_09.txt | AC | 102 ms | 8692 KiB |
| test_10.txt | AC | 230 ms | 14600 KiB |
| test_11.txt | AC | 857 ms | 18656 KiB |
| test_12.txt | AC | 313 ms | 13224 KiB |
| test_13.txt | AC | 358 ms | 14892 KiB |
| test_14.txt | AC | 1929 ms | 21652 KiB |
| test_15.txt | AC | 433 ms | 16820 KiB |
| test_16.txt | AC | 500 ms | 15116 KiB |
| test_17.txt | AC | 641 ms | 14472 KiB |
| test_18.txt | AC | 185 ms | 9756 KiB |
| test_19.txt | AC | 480 ms | 15784 KiB |
| test_20.txt | AC | 330 ms | 11904 KiB |
| test_21.txt | AC | 778 ms | 20344 KiB |
| test_22.txt | AC | 1305 ms | 21880 KiB |
| test_23.txt | AC | 1617 ms | 23036 KiB |
| test_24.txt | AC | 1070 ms | 20336 KiB |
| test_25.txt | AC | 1186 ms | 21896 KiB |
| test_26.txt | AC | 1593 ms | 23012 KiB |
| test_27.txt | AC | 960 ms | 20304 KiB |
| test_28.txt | AC | 1156 ms | 21900 KiB |
| test_29.txt | AC | 1609 ms | 23100 KiB |
| test_30.txt | AC | 1027 ms | 20280 KiB |
| test_31.txt | AC | 1293 ms | 21884 KiB |
| test_32.txt | AC | 1596 ms | 23092 KiB |
| test_33.txt | AC | 926 ms | 21136 KiB |
| test_34.txt | AC | 925 ms | 21248 KiB |
| test_35.txt | AC | 922 ms | 21240 KiB |
| test_36.txt | AC | 791 ms | 21496 KiB |
| test_37.txt | AC | 1581 ms | 25496 KiB |
| test_38.txt | AC | 1908 ms | 24272 KiB |
| test_39.txt | AC | 388 ms | 17176 KiB |
| test_40.txt | AC | 1147 ms | 21428 KiB |
| test_41.txt | AC | 1054 ms | 24376 KiB |
| test_42.txt | AC | 790 ms | 21500 KiB |
| test_43.txt | AC | 1560 ms | 25484 KiB |
| test_44.txt | AC | 2993 ms | 25504 KiB |
| test_45.txt | AC | 785 ms | 23312 KiB |
| test_46.txt | AC | 687 ms | 21332 KiB |
| test_47.txt | AC | 1648 ms | 25704 KiB |
| test_48.txt | AC | 787 ms | 21492 KiB |
| test_49.txt | AC | 1580 ms | 25560 KiB |
| test_50.txt | AC | 1910 ms | 24252 KiB |
| test_51.txt | AC | 1375 ms | 23444 KiB |
| test_52.txt | AC | 1149 ms | 21480 KiB |
| test_53.txt | AC | 2366 ms | 25680 KiB |
| test_54.txt | AC | 788 ms | 21508 KiB |
| test_55.txt | AC | 1576 ms | 25456 KiB |
| test_56.txt | AC | 2984 ms | 25544 KiB |
| test_57.txt | AC | 430 ms | 17132 KiB |
| test_58.txt | AC | 677 ms | 21504 KiB |
| test_59.txt | AC | 1619 ms | 25440 KiB |
| test_60.txt | AC | 787 ms | 21508 KiB |
| test_61.txt | AC | 1590 ms | 25512 KiB |
| test_62.txt | AC | 1216 ms | 22220 KiB |
| test_63.txt | AC | 930 ms | 23500 KiB |
| test_64.txt | AC | 1153 ms | 21472 KiB |
| test_65.txt | AC | 2300 ms | 25592 KiB |
| test_66.txt | AC | 789 ms | 21516 KiB |
| test_67.txt | AC | 1587 ms | 25524 KiB |
| test_68.txt | AC | 1915 ms | 24192 KiB |
| test_69.txt | AC | 1526 ms | 32828 KiB |