/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 5ms 1.02 MiB
#2 Accepted 6ms 1.02 MiB
#3 Accepted 7ms 988.0 KiB
#4 Accepted 11ms 1.02 MiB
#5 Accepted 11ms 1.023 MiB
#6 Accepted 4ms 788.0 KiB
#7 Accepted 11ms 1.02 MiB
#8 Accepted 11ms 836.0 KiB
#9 Accepted 6ms 1008.0 KiB
#10 Accepted 5ms 1.02 MiB
#11 Accepted 5ms 836.0 KiB
#12 Accepted 2ms 788.0 KiB
#13 Accepted 5ms 836.0 KiB
#14 Accepted 5ms 860.0 KiB
#15 Accepted 2ms 788.0 KiB
#16 Accepted 9ms 852.0 KiB
#17 Accepted 9ms 916.0 KiB
#18 Accepted 7ms 960.0 KiB
#19 Accepted 5ms 1.02 MiB
#20 Accepted 2ms 788.0 KiB
#21 Accepted 5ms 1.02 MiB
#22 Accepted 5ms 1.02 MiB
#23 Accepted 5ms 1000.0 KiB
#24 Accepted 5ms 1.02 MiB
#25 Accepted 7ms 896.0 KiB
#26 Accepted 8ms 1.02 MiB
#27 Accepted 3ms 836.0 KiB
#28 Accepted 9ms 1.02 MiB
#29 Accepted 9ms 1.02 MiB
#30 Accepted 9ms 1.02 MiB
#31 Accepted 9ms 1.02 MiB
#32 Accepted 9ms 1.016 MiB
#33 Accepted 6ms 1.02 MiB
#34 Accepted 5ms 1.02 MiB
#35 Accepted 5ms 1.02 MiB
#36 Accepted 5ms 1.02 MiB
#37 Accepted 2ms 788.0 KiB
#38 Accepted 5ms 1.02 MiB
#39 Accepted 5ms 1.02 MiB
#40 Accepted 5ms 1.023 MiB
#41 Accepted 5ms 1.02 MiB
#42 Accepted 5ms 996.0 KiB
#43 Accepted 5ms 1.02 MiB
#44 Accepted 5ms 1.02 MiB
#45 Accepted 2ms 788.0 KiB
#46 Accepted 12ms 832.0 KiB
#47 Accepted 14ms 836.0 KiB
#48 Accepted 14ms 832.0 KiB
#49 Accepted 8ms 836.0 KiB
#50 Accepted 2ms 788.0 KiB
#51 Accepted 5ms 908.0 KiB
#52 Accepted 5ms 1.02 MiB
#53 Accepted 5ms 1.02 MiB
#54 Accepted 5ms 828.0 KiB
#55 Accepted 5ms 836.0 KiB
#56 Accepted 5ms 1.02 MiB
#57 Accepted 5ms 1.039 MiB
#58 Accepted 5ms 1.02 MiB
#59 Accepted 5ms 1.016 MiB
#60 Accepted 5ms 1.246 MiB
#61 Accepted 5ms 1.039 MiB
#62 Accepted 5ms 1.035 MiB
#63 Accepted 5ms 1.02 MiB
#64 Accepted 5ms 836.0 KiB
#65 Accepted 5ms 856.0 KiB
#66 Accepted 5ms 904.0 KiB
#67 Accepted 5ms 1.02 MiB
#68 Accepted 2ms 764.0 KiB
#69 Accepted 11ms 1.02 MiB
#70 Accepted 11ms 1.02 MiB
#71 Accepted 11ms 952.0 KiB
#72 Accepted 11ms 1.02 MiB
#73 Accepted 11ms 916.0 KiB
#74 Accepted 11ms 1.02 MiB
#75 Accepted 9ms 1.02 MiB
#76 Accepted 5ms 1.02 MiB
#77 Accepted 5ms 1.02 MiB
#78 Accepted 5ms 1.02 MiB
#79 Accepted 5ms 1.02 MiB
#80 Accepted 5ms 836.0 KiB
#81 Accepted 5ms 832.0 KiB
#82 Accepted 394ms 48.035 MiB
#83 Accepted 383ms 48.137 MiB
#84 Accepted 401ms 48.02 MiB
#85 Accepted 406ms 48.141 MiB
#86 Accepted 386ms 48.145 MiB
#87 Accepted 381ms 48.074 MiB
#88 Accepted 391ms 48.199 MiB
#89 Accepted 394ms 48.145 MiB
#90 Accepted 393ms 48.18 MiB
#91 Accepted 390ms 48.031 MiB
#92 Accepted 399ms 48.184 MiB
#93 Accepted 403ms 48.109 MiB
#94 Accepted 402ms 48.062 MiB
#95 Accepted 397ms 48.02 MiB
#96 Accepted 402ms 48.176 MiB
#97 Accepted 395ms 48.082 MiB
#98 Accepted 380ms 47.977 MiB
#99 Accepted 392ms 48.137 MiB
#100 Accepted 403ms 48.137 MiB

Code

/*
 *   Copyright (c) 2025 Emon Thakur
 *   All rights reserved.
 */
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
//#define file cout

ll a[200005],pfs[31][200005],n,x;
bool notprime[100006];
vector<ll>allprime;
void seive()
{
    for(int i=2;i<=1000;i++)
    {
        if(notprime[i]) continue;
        for(int j=i+i;j<=100000;j+=i) notprime[j]=true;
    }
    for(int i=2;i<=100000;i++) {if(!notprime[i]) allprime.push_back(i);}
}

void calcpfs()
{
    for(ll k=x;k<x+30;k++)
    {
        vector<ll> pd;
        ll kk = k;
        for(auto p:allprime)
        {
            if(kk%p==0) pd.push_back(p);
            while(kk%p==0) kk/=p;
        }if(kk>1) pd.push_back(kk);

        for(int i=1;i<=n;i++)
        {
            ll cnt = k;
            for(auto gcd:pd)
            {
                if(a[i]%gcd==0) {cnt=0; break;}
                cnt = min(cnt ,((a[i]+gcd)/gcd)*gcd - a[i]);
            }
            pfs[k-x][i]  = pfs[k-x][i-1] + max(0ll,cnt);
        }
    }
}

ll ans(int start,int end,ll k)
{
    if(start==end){
        return pfs[k-x][start]-pfs[k-x][start-1];
    }
    int mid = (start+end-1)/2;
    ll costleft = pfs[k-x][mid]-pfs[k-x][start-1];
    ll costright = pfs[k-x][end]-pfs[k-x][mid];
    return min(costright + ans(start,mid,k+1) , costleft + ans(mid+1,end,k+1));
}

void solve(int tc)
{
    // string outp = "output"+to_string(tc)+".txt";
    // string inp = "input"+to_string(tc)+".txt";
    // ofstream file(outp);
    // freopen(inp.c_str(),"r",stdin);

    seive();
    cin >> n >> x;
    for(int i=1;i<=n;i++) cin >> a[i];
    if(x==1)
    {
        cout<<-1<<'\n';
        return;
    }
    calcpfs();
    cout << ans(1,n,x)<<'\n';
}


int main()
{
    solve(0);
    // int l=0,r=99;
    // for(int i=l;i<=r;i++) solve(i);
}

Information

Submit By
Type
Submission
Problem
P1168 F. x ordinary array
Language
C++17 (G++ 13.2.0)
Submit At
2025-03-28 21:11:23
Judged At
2025-03-28 21:11:23
Judged By
Score
100
Total Time
406ms
Peak Memory
48.199 MiB