Submission #581795

#TimeUsernameProblemLanguageResultExecution timeMemory
5817953zpSirni (COCI17_sirni)C++14
84 / 140
1438 ms786432 KiB
#include<bits/stdc++.h> #define ll long long using namespace std; int a[100009]; int p[100009],s[100009]; int N[10000009]; vector<pair<int,pair<int,int> > > E; void ad(int x, int y){ if(x != y) E.push_back({min(a[x]%a[y], a[y]%a[x]), {x,y}}); } int P(int x){ if(p[x] == x) return x; p[x] = P(p[x]); return p[x]; } ll ans = 0; void un(int x, int y, int z){ x = P(x); y = P(y); if(x == y) return; if(s[x] > s[y]) swap(x, y); p[x] = y; s[x] += s[y]; ans += z; } main(){ int n; cin >> n; for(int i = 1; i <= n; i++){ cin >> a[i]; p[i] = i; s[i] = 1; } sort(a+1, a+n+1); vector<int> v; for(int i = 1;i <= n; i++){ if(a[i] == a[i-1]) continue; N[a[i]] = i; v.push_back(i); } for(int i = a[n]; i >= 0; i--){ if(!N[i]) N[i] = N[i+1]; } for(int i = 1; i < v.size(); i++){ int x = v[i]; for(int j = 0; j * a[x] <= a[n]; j++){ int y = N[j*a[x]]; if(y == x && a[y] < a[n]) y = N[a[y]+1]; ad(x, y); } } sort(E.begin(), E.end()); for(auto e: E){ int x = e.second.first, y = e.second.second; un(x, y, e.first); } cout << ans << endl; }

Compilation message (stderr)

sirni.cpp:26:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   26 | main(){
      | ^~~~
sirni.cpp: In function 'int main()':
sirni.cpp:45:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |     for(int i = 1; i < v.size(); i++){
      |                    ~~^~~~~~~~~~
#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...