답안 #889449

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
889449 2023-12-19T17:52:48 Z codefox Sirni (COCI17_sirni) C++14
0 / 140
5000 ms 384228 KB
#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> mult;
    set<int> num;
    map<int, bool> v;
    for(int i = 0; i < n; i++)
    {
        cin >> nums[i];
        if (v[nums[i]]) continue;
        num.insert(nums[i]);
        v[nums[i]]=true;
    }
    for (int ele:nums)
    {
        for (int j = ele; j <= 1e7; j+=ele) mult.insert({j, ele});
    }

    ll sol = 0;

    priority_queue<pii, vector<pii>, greater<pii>> pq;
    pq.push({0,*nums.begin()});
    vector<bool> vis(n, 0);

    auto o = num.end();
    o--;
    int last = *o;
    while (pq.size())
    {
        int i, d;
        tie(d, i) = pq.top();
        pq.pop();
        if (vis[i]) continue;
        vis[i] = true;
        num.erase(i);
        sol+=d;
        if (num.empty()) break;

        auto p = mult.lower_bound({i, i});
        if (p != mult.begin())
        {
            p--;
            pq.push({i-(*p).first, (*p).second});
        }
        for (int j = i; j <=*(--num.end()); j+=i)
        {
            auto u = num.lower_bound(j);
            if (u != num.end()) pq.push({*u-j, *u});
            if (u != num.begin())
            {
                u--;
                if (j-*u< i) pq.push({i-(j-*u), *u});
            }
            mult.erase({j, i});
        }
    }
    cout << sol;

    return 0;
}

Compilation message

sirni.cpp: In function 'int main()':
sirni.cpp:36:9: warning: unused variable 'last' [-Wunused-variable]
   36 |     int last = *o;
      |         ^~~~
# 결과 실행 시간 메모리 Grader output
1 Runtime error 2 ms 1112 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5068 ms 384228 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 2 ms 1116 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5034 ms 302368 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 950 ms 180532 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5047 ms 298788 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5054 ms 277180 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 749 ms 147656 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1031 ms 196524 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 59 ms 22100 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -