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
AC × 1
AC × 70
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