Submission #889437

#TimeUsernameProblemLanguageResultExecution timeMemory
889437codefoxSirni (COCI17_sirni)C++14
0 / 140
1512 ms85124 KiB
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define pii pair<int, int>

int main()
{
    int n;
    cin >> n;
    vector<int> nums(n);
    set<pii> num;
    for(int i = 0; i < n; i++)
    {
        cin >> nums[i];
        num.insert({nums[i], i});
    }
    sort(nums.begin(), nums.end());
    set<int> mult;
    for (int j = nums[0]; j <=1e7; j+=nums[0])
    {
        mult.insert(j);
    }
    ll sol = 0;

    priority_queue<pii, vector<pii>, greater<pii>> pq;
    pq.push({0,0});
    for(int i = 1; i < n; i++) pq.push({nums[i], i});
    vector<bool> vis(n, 0);

    while (pq.size())
    {
        int i, d;
        tie(d, i) = pq.top();
        pq.pop();
        if (vis[i]) continue;
        vis[i] = true;
        num.erase({nums[i], i});
        for (int j = nums[i]; j <=1e7; j+=nums[i])
        {
            auto u = num.lower_bound({j, 0});
            if (u != num.end()) pq.push({(*u).first-j, (*u).second});
        }
        sol+=d;
    }
    cout << sol;

    return 0;
}
#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...