/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 5ms 1.02 MiB
#2 Accepted 5ms 1.02 MiB
#3 Accepted 5ms 1.02 MiB
#4 Accepted 5ms 1.02 MiB
#5 Accepted 6ms 1020.0 KiB
#6 Accepted 7ms 1.02 MiB
#7 Accepted 6ms 1.023 MiB
#8 Accepted 7ms 1.02 MiB
#9 Accepted 8ms 1.02 MiB
#10 Accepted 9ms 1.02 MiB
#11 Accepted 9ms 1.016 MiB
#12 Accepted 9ms 1.02 MiB
#13 Accepted 10ms 924.0 KiB
#14 Accepted 11ms 892.0 KiB
#15 Accepted 11ms 1.02 MiB
#16 Accepted 11ms 1.02 MiB
#17 Accepted 13ms 884.0 KiB
#18 Accepted 14ms 932.0 KiB
#19 Accepted 14ms 836.0 KiB
#20 Accepted 14ms 964.0 KiB
#21 Accepted 14ms 1.02 MiB
#22 Accepted 14ms 984.0 KiB
#23 Accepted 14ms 928.0 KiB
#24 Accepted 14ms 884.0 KiB
#25 Accepted 14ms 896.0 KiB
#26 Accepted 10ms 996.0 KiB
#27 Accepted 8ms 1.02 MiB
#28 Accepted 8ms 1.02 MiB
#29 Accepted 8ms 1.02 MiB
#30 Accepted 9ms 1.02 MiB
#31 Accepted 12ms 1.02 MiB
#32 Accepted 12ms 1.02 MiB
#33 Accepted 12ms 860.0 KiB
#34 Accepted 12ms 1.02 MiB
#35 Accepted 12ms 932.0 KiB
#36 Accepted 11ms 1.02 MiB
#37 Accepted 12ms 1.02 MiB
#38 Accepted 12ms 1.02 MiB
#39 Accepted 12ms 924.0 KiB
#40 Accepted 12ms 836.0 KiB
#41 Accepted 14ms 1.0 MiB
#42 Accepted 16ms 908.0 KiB
#43 Accepted 16ms 960.0 KiB
#44 Accepted 16ms 972.0 KiB
#45 Accepted 16ms 1.02 MiB
#46 Accepted 16ms 1012.0 KiB
#47 Accepted 16ms 1.02 MiB
#48 Accepted 16ms 968.0 KiB
#49 Accepted 16ms 916.0 KiB
#50 Accepted 16ms 1.02 MiB
#51 Accepted 16ms 1.02 MiB
#52 Accepted 15ms 1.02 MiB
#53 Accepted 8ms 940.0 KiB
#54 Accepted 8ms 1.02 MiB
#55 Accepted 9ms 1.02 MiB
#56 Accepted 12ms 1.02 MiB
#57 Accepted 13ms 1.02 MiB
#58 Accepted 14ms 1.02 MiB
#59 Accepted 16ms 1.02 MiB
#60 Accepted 16ms 1.02 MiB
#61 Accepted 11ms 1000.0 KiB
#62 Accepted 11ms 852.0 KiB
#63 Accepted 11ms 1.02 MiB
#64 Accepted 11ms 1.02 MiB
#65 Accepted 11ms 832.0 KiB
#66 Accepted 14ms 1.02 MiB
#67 Accepted 14ms 928.0 KiB
#68 Accepted 14ms 1.02 MiB
#69 Accepted 8ms 960.0 KiB
#70 Accepted 8ms 836.0 KiB
#71 Accepted 15ms 1000.0 KiB
#72 Accepted 16ms 1.02 MiB
#73 Accepted 15ms 968.0 KiB
#74 Accepted 16ms 1.02 MiB
#75 Accepted 16ms 956.0 KiB
#76 Accepted 16ms 1.02 MiB
#77 Accepted 14ms 1.02 MiB
#78 Accepted 8ms 944.0 KiB
#79 Accepted 8ms 944.0 KiB
#80 Accepted 8ms 1.02 MiB
#81 Accepted 8ms 1012.0 KiB
#82 Accepted 389ms 48.156 MiB
#83 Accepted 381ms 48.051 MiB
#84 Accepted 395ms 48.02 MiB
#85 Accepted 400ms 48.207 MiB
#86 Accepted 381ms 48.062 MiB
#87 Accepted 380ms 48.02 MiB
#88 Accepted 391ms 48.02 MiB
#89 Accepted 390ms 48.145 MiB
#90 Accepted 397ms 48.066 MiB
#91 Accepted 390ms 48.145 MiB
#92 Accepted 402ms 48.066 MiB
#93 Accepted 403ms 48.02 MiB
#94 Accepted 397ms 48.023 MiB
#95 Accepted 390ms 48.02 MiB
#96 Accepted 407ms 48.023 MiB
#97 Accepted 392ms 48.066 MiB
#98 Accepted 378ms 48.121 MiB
#99 Accepted 394ms 48.023 MiB
#100 Accepted 407ms 48.125 MiB

Code

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

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 = 1e9;
            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];
    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-03 16:06:07
Judged At
2025-03-03 16:06:07
Judged By
Score
100
Total Time
407ms
Peak Memory
48.207 MiB