제출 #1154498

#제출 시각아이디문제언어결과실행 시간메모리
1154498giaminh2211Sirni (COCI17_sirni)C++20
0 / 140
180 ms2020 KiB
#include <bits/stdc++.h>

using namespace std;
using ll=long long;

struct node{
    int ch0, ch1;
};

const int N=1e6+13;
ll res=0;
int n;
ll a[N];
ll ans[N];
ll mx;

void scan(){
    cin >> n;
    for(int i=1; i<=n; i++){
        cin >> a[i];
    }
    sort(a+1, a+n+1);
    n=unique(a+1, a+n+1)-a-1;
    mx=a[n];
    //for(int i=1; i<=n; i++){
    //	cout << a[i] << '\n';
    //}
}

void solve(){
	fill(ans+2, ans+n+1, 1e18);
    for(int i=1; i<n; i++){
        for(int j=a[i]; j<=mx; j+=a[i]){
            int p=lower_bound(a+1, a+n+1, j)-a;
            if(j==a[i]) p=lower_bound(a+1, a+n+1, j+1)-a;
            if(1<=p && p<=n){
            	//cerr << i << ' ' << j << ' ' << p << ' ' << a[p]-j << '\n';
            	ans[p]=min(ans[p], a[p]-j);
            	ans[i]=min(ans[i], a[p]-j);
            }
        }
    }
    for(int i=2; i<=n; i++){
    	res+=ans[i];
    	//cerr << ans[i] << '\n';
    }
    cout << res;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    scan();
    solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...