Submission #1264892

#TimeUsernameProblemLanguageResultExecution timeMemory
1264892menkhSirni (COCI17_sirni)C++17
0 / 140
355 ms64684 KiB
#include <bits/stdc++.h> using namespace std; #define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; i++) #define FORD(i, b, a) for (int i = (b), _a = (a); i >= _a; i--) #define REP(i, n) for (int i = 0, _n = (n); i < _n; i++) #define MAX 100005 #define MAX_VAL 10000005 int p[MAX], parent[MAX_VAL]; int n, Max = 0; struct menkh { int u, v, w; }; vector<menkh> adj; int root(int v) { return v == parent[v] ? v : parent[v] = root(parent[v]); } bool unite(int u, int v) { u = root(u), v = root(v); if (u == v) return false; parent[v] = u; return true; } void solve() { scanf("%d", &n); FOR(i, 1, n) { scanf("%d", &p[i]); Max = max(p[i], Max); } sort(p + 1, p + n + 1); FOR(i, 1, n) parent[p[i]] = p[i]; FOR(i, 1, n) { for (int k = 1; k * p[i] <= Max; k++) { int v = lower_bound(p + 1, p + n + 1, k * p[i]) - p; if (v != n + 1) if (p[v] <= (k + 1) * p[i]) { adj.push_back({p[v], p[i], p[v] % p[i]}); } } } sort(adj.begin(), adj.end(), [](menkh A, menkh B) { return A.w < B.w; }); int answer = 0; REP(i, (int)adj.size()) { if (unite(adj[i].u, adj[i].v)) answer += adj[i].w; } printf("%d\n", answer); } int main() { solve(); }

Compilation message (stderr)

sirni.cpp: In function 'void solve()':
sirni.cpp:31:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   31 |     scanf("%d", &n);
      |     ~~~~~^~~~~~~~~~
sirni.cpp:33:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   33 |         scanf("%d", &p[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...