제출 #1022637

#제출 시각아이디문제언어결과실행 시간메모리
1022637dpsaveslivesSirni (COCI17_sirni)C++17
140 / 140
3167 ms681768 KiB
#include <bits/stdc++.h> #define f first #define s second using namespace std; const int MAXN = 1e7+10; vector<pair<int,int>> edges[MAXN]; struct DSU{ int N; vector<int> d; void init(int n){ N = n; d = vector<int>(N,-1); } int finden(int x){ if(d[x] < 0) return x; return finden(d[x]); } bool unite(int a, int b){ a = finden(a), b = finden(b); if(a == b) return false; if(d[a] > d[b]){ swap(a,b); } //absolute of d[a] is smaller than absolute of d[b], so there are less in a than in b, although we want to add b to a d[a] += d[b]; d[b] = a; return true; } }D; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N; cin >> N; vector<int> P(N); for(int i = 0;i<N;++i){ cin >> P[i]; } P.resize(unique(P.begin(),P.end())-P.begin()); N = P.size(); D.init(N); sort(P.begin(),P.end()); for(int i = 0;i<N;++i){ for(int j = P[i];j <= P.back(); j += P[i]){ auto it = lower_bound(P.begin()+i+1,P.end(),j); if(it == P.end()) continue; int it2 = it-P.begin(); if(P[it2]-j >= P[i]){ continue; } edges[P[it2]-j].push_back({it2,i}); } } long long ans = 0, cnt = N-1; for(int i = 0;i<MAXN;++i){ for(auto p : edges[i]){ if(D.unite(p.f,p.s)){ ans += i; } } } cout << ans << "\n"; return 0; }

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

sirni.cpp: In function 'int main()':
sirni.cpp:52:24: warning: unused variable 'cnt' [-Wunused-variable]
   52 |     long long ans = 0, cnt = N-1;
      |                        ^~~
#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...