제출 #1264892

#제출 시각아이디문제언어결과실행 시간메모리
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();
}

컴파일 시 표준 에러 (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...