Submission #889449

#TimeUsernameProblemLanguageResultExecution timeMemory
889449codefoxSirni (COCI17_sirni)C++14
0 / 140
5068 ms384228 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> 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 (stderr)

sirni.cpp: In function 'int main()':
sirni.cpp:36:9: warning: unused variable 'last' [-Wunused-variable]
   36 |     int last = *o;
      |         ^~~~
#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...