Submission #1095530

#TimeUsernameProblemLanguageResultExecution timeMemory
10955300pt1mus23Sirni (COCI17_sirni)C++14
140 / 140
2205 ms539748 KiB
#include <bits/stdc++.h> using namespace std; #define endl '\n' #define ins insert #define pb push_back #define putr(x) cout<<x<<endl;return; #define all(x) x.begin(),x.end() #define _ << " " << const int mod = 1e9+7 , sze= 1e7 +25 , inf = INT_MAX , L = 31 ; // credit : aykhn int parent[sze]; int sz[sze]; int root(int node){ if(parent[node]==node){ return node; } return parent[node]=root(parent[node]); } int unite(int a,int b){ int x = root(a); int y = root(b); if(x==y){ return 0; } if(sz[y]>sz[x]){ swap(y,x); } parent[y]=x; sz[x]+=sz[y]; return 1; } vector<pair<int,int>> event[sze]; void opt1z(){ int n; cin>>n; for(int i=0;i<=(int)n+23;i++){ sz[i]=1; parent[i]=i; } int ans=0; vector<int> arr(n); set<int> lst; for(int i=0;i<n;i++){ cin>>arr[i]; lst.ins(arr[i]); } sort(all(arr)); int mx = arr.back(); int i =0; for(auto v:lst){ int c =v; while(arr[i]!=v){ i++; } while(c<=mx){ auto it = arr.end(); if(c==v){ it = upper_bound(all(arr),c); } else{ it = lower_bound(all(arr),c); } if(it==arr.end()){ break; } // cout<<v _ " ," _ c _ *it % v <<endl; event[ (*it) % v ].pb({i,it - arr.begin()}); c = ((*it) / v +1) * v; } } for(int i =0;i<=mx;i++){ for(auto v:event[i]){ // cout<<i _ v.first _ "=> " _ v.second<<endl; if(unite(v.first,v.second)){ ans+=i; } } } putr(ans); } signed main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int tt = 1; // cin>>tt; while(tt--){ opt1z(); } return 0; }
#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...