제출 #1057624

#제출 시각아이디문제언어결과실행 시간메모리
1057624vjudge1Sirni (COCI17_sirni)C++17
84 / 140
1410 ms786432 KiB
#include <iostream> #include <vector> #include <algorithm> #define task "test" using namespace std; using i64 = int64_t; struct edge { int u, v, w; edge (int _u, int _v, int _w) : u(_u), v(_v), w(_w) {}; }; const int N = 1e5+5; struct DSU { int p[N]; DSU (int n) { for(int i = 1; i <= n; ++i) p[i] = i; } int find(int a) { return (a == p[a]) ? a : p[a] = find(p[a]); } void unite(int a, int b) { a = find(a); b = find(b); if(a != b) { p[b] = a; } } }; int n, nxt[N]; vector <int> a; vector <edge> g; int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); if(fopen(task".inp", "r")) { freopen(task".inp", "r", stdin); freopen(task".out", "w", stdout); } cin >> n; a.resize(n); for(auto &i:a) cin >> i; sort(a.begin(), a.end()); a.erase(unique(a.begin(), a.end()), a.end()); for(int i = 0; i < (int)a.size(); ++i) { int l = lower_bound(a.begin(), a.end(), a[i]) - a.begin(); for(int j = a[i]; j <= *prev(a.end()); j += a[i]) { g.emplace_back(i, l, a[l] % a[i]); int r = lower_bound(a.begin(), a.end(), j+a[i]) - a.begin(); nxt[l]++; nxt[r]--; l = r; } } for(int i = 0; i < (int)a.size() - 1; ++i) { if(i > 0) nxt[i] += nxt[i-1]; if(nxt[i] > 0) g.emplace_back(i, i+1, a[i+1] % a[i]); } sort(g.begin(), g.end(), [](edge c, edge d) {return c.w < d.w;}); DSU dsu(n); i64 ans = 0; for(edge e:g) { if(dsu.find(e.u) != dsu.find(e.v)) { dsu.unite(e.u, e.v); ans += e.w; } } cout << ans; }

컴파일 시 표준 에러 (stderr) 메시지

sirni.cpp: In function 'int32_t main()':
sirni.cpp:54:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   54 |         freopen(task".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
sirni.cpp:55:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   55 |         freopen(task".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#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...