Submission #779765

#TimeUsernameProblemLanguageResultExecution timeMemory
779765vjudge1Sirni (COCI17_sirni)C++17
84 / 140
888 ms786432 KiB
#include<bits/stdc++.h> using namespace std; #define task "test" #define pb push_back #define fi first #define se second #define for1(i,j,k) for(int i=j;i<=k;i++) #define for2(i,j,k) for(int i=j;i>=k;i--) #define for3(i,j,k,l) for(int i=j;i<=k;i+=l) #define bit(n,i) ((n>>i)&1) #define all(x) x.begin(),x.end() #pragma GCC optimize("Ofast,unroll-loops") #pragma GCC target("avx,avx2,bmi,bmi2,sse,sse2,sse3,ssse3,sse4,popcnt") //#define int long long typedef long long ll; typedef pair<int,int> pii; typedef double ld; typedef pair<ld,ld> pdd; typedef pair<ll,ll> pll; const ll maxn=1e7+2; const ll inf=1e18; const ll mod=1e9+7; const ll base=311; int n,nxt[maxn],dd[maxn],par[maxn]; vector<pair<int,pii>> Edge; int Find(int v) { return (par[v] < 0) ?v: (par[v] = Find(par[v])); } bool Union(int x, int y) { if ((x = Find(x)) == (y = Find(y))) { return false ; } if (par[y] < par[x]) { swap(x, y); } par[x] += par[y]; par[y] = x; return true; } void sol() { cin >> n; int mx=-1; for (int i=1;i<=n;i++) { int x;cin >> x; mx=max(x,mx); dd[x]++; } int ans=0,diff=0; bool ck=0; nxt[(int)mx+1]=-1; for2(i,mx,1) { par[i]=-1; if (dd[i]) nxt[i]=i; else nxt[i]=nxt[i+1]; } for (int i=1;i<=mx;i++) { //cerr<<"wtf\n"; if (dd[i]) { if (nxt[i+1]==-1) continue; Edge.pb({nxt[i+1]-i,{nxt[i+1],i}}); for (int j=2*i;j<=mx;j+=i) { if (nxt[i+1]==-1) break; Edge.pb({nxt[j]-j,{nxt[j],i}}); } } } sort(all(Edge)); for (auto x:Edge) { //cerr<<x.fi<<' '<<x.se.se<<' '<<x.se.fi<<'\n'; if (!Union(x.se.fi,x.se.se)) continue; ans+=x.fi; } cout << ans; } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(NULL); if (fopen(task".inp","r")) { freopen(task".inp","r",stdin); freopen(task".out","w",stdout); } // int theta; cin >> theta; int t=1;//cin >> t; while (t--) sol(); }

Compilation message (stderr)

sirni.cpp: In function 'void sol()':
sirni.cpp:58:15: warning: unused variable 'diff' [-Wunused-variable]
   58 |     int ans=0,diff=0;
      |               ^~~~
sirni.cpp:59:10: warning: unused variable 'ck' [-Wunused-variable]
   59 |     bool ck=0;
      |          ^~
sirni.cpp: In function 'int32_t main()':
sirni.cpp:97:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   97 |         freopen(task".inp","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
sirni.cpp:98:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   98 |         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...