제출 #1155793

#제출 시각아이디문제언어결과실행 시간메모리
1155793DangKhoizzzzSirni (COCI17_sirni)C++20
0 / 140
49 ms7736 KiB
#include <bits/stdc++.h> #define ll long long #define fi first #define se second #define pii pair <int , int> #define arr3 array <int , 3> /* + array limit ??? + special case ??? n = 1? + time limit ??? */ using namespace std; const int INF = 1e18 + 7; const int maxn = 2e5 + 7; struct DSU { vector <int> parent; vector <int> sz; void init(int n) { parent.assign(n+5 , 0); sz.assign(n+5 , 0); for(int i =1 ; i <= n; i++) { sz[i] = 1; parent[i] = i; } } int find_par(int u) { if(parent[u] == u) return u; return parent[u] = find_par(parent[u]); } void unionset(int u , int v) { u = find_par(u); v = find_par(v); if(u == v) return; if(sz[u] < sz[v]) swap(u , v); parent[v] = u; sz[u] += sz[v]; } bool connected(int u , int v) { return find_par(u) == find_par(v); } } dsu; int n , nxt[maxn]; vector <int> a; vector <arr3> edge; void solve() { cin >> n; for(int i = 1; i <= n; i++) { int x; cin >> x; a.push_back(x); } a.push_back(-1); sort(a.begin() , a.end()); a.erase(unique(a.begin() , a.end()) , a.end()); n = a.size() - 1; dsu.init(n); for(int i = 1; i <= n; i++) nxt[a[i]] = i; for(int i = a.back() - 1; i >= 1; i--) { if(nxt[i] == 0) nxt[i] = nxt[i+1]; } for(int i = 1; i < n; i++) { edge.push_back({a[i+1]%a[i] , i , i+1}); for(int j = a[i]*2; j <= a.back(); j += a[i]) { edge.push_back({a[nxt[j]]%a[i] , i , nxt[j]}); } } int ans = 0; sort(edge.begin() , edge.end()); for(arr3 e: edge) { int w = e[0] , u = e[1] , v = e[2]; if(!dsu.connected(u , v)) { ans += w; dsu.unionset(u , v); } } cout << ans << '\n'; } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); solve(); return 0; }

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

sirni.cpp:16:22: warning: overflow in conversion from 'double' to 'int' changes value from '1.0e+18' to '2147483647' [-Woverflow]
   16 | const int INF = 1e18 + 7;
      |                 ~~~~~^~~
#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...