Submission #1167692

#TimeUsernameProblemLanguageResultExecution timeMemory
1167692TurkhuuSirni (COCI17_sirni)C++20
140 / 140
845 ms611512 KiB
//https://codeforces.com/blog/entry/50241?#comment-341952 #include<bits/stdc++.h> using namespace std; #define ll long long #define f(i, x, n) for(int i = x; i < (int)(n); ++i) int x[100000], nxt[10000001], p[10000001]; vector<pair<int, int> > w[10000001]; int P(int v){ if (p[v])return p[v] = P(p[v]); return v; } int main(){ int n; scanf("%d", &n); f(i, 0, n)scanf("%d", x + i), nxt[x[i]] = x[i]; sort(x, x + n); n = unique(x, x + n) - x; for (int i = 9999999; i >= 0; --i)if (!nxt[i])nxt[i] = nxt[i + 1]; f(i, 0, n){ int t = x[i], z = nxt[t + 1]; if (z && z - t < t)w[z - t].push_back(make_pair(t, z)); for (int j = t << 1; j <= 10000000; j += t){ z = nxt[j]; if (!z)break; if (z - j < t)w[z - j].push_back(make_pair(t, z)); } } ll an = 0; int k = 0; f(i, 0, 10000000){ vector<pair<int, int> > &v = w[i]; int s = v.size(); f(j, 0, s){ int x = P(v[j].first), y = P(v[j].second); if (x == y)continue; an += i; p[y] = x; if (++k + 1 == n)break; } if (k + 1 == n)break; } printf("%lld\n", an); }

Compilation message (stderr)

sirni.cpp: In function 'int main()':
sirni.cpp:17:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |     scanf("%d", &n);
      |     ~~~~~^~~~~~~~~~
sirni.cpp:18:20: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   18 |     f(i, 0, n)scanf("%d", x + i), nxt[x[i]] = x[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...