티스토리 뷰


문제의 조건이 많다 

정리하자면

1) 학교는 N개이고, 학생은 A[i]...A[N]명

2) 대회의 팀은 1~200000까지 임의로 가능

3) 대회에 나가려면 같은 학교 학생끼리 팀을 해야함

4) 학교에서 대회를 나가려면 모든 학생이 팀에 포함되어 나가야 함

5) 학교 예선 1등만 본선에 가고 본선은 최소 2팀이상 나와야 함


대회에 나가려면 학교 학생의 공약수로 팀을 이뤄야 한다

그래야 모든 학생이 나갈 수 있다

그럼 모든 학교의 공약수를 미리 구해두고 

공약수 X 공약수를 가지는 학교의 최대값을 찾으면 된다!

이 때 공약수를 가지는 학교가 2이상만 가능하다


200만 X 20만 ==롱롱 필수

벡터로 구현했다가 메모리 터졌다 ㅎㅎ


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define MAXN 2000002
#define ll long long
ll arr[MAXN];
int n;
void go(int x) {
    for (int i = 1; i*<= x; i++) {
        if (x%i == 0) {
            arr[i]++;
            if (i != x / i) arr[x / i]++;
        }
    }
}
int main() {
    scanf(" %d"&n);
    for (int i = 0; i < n; i++) {
        int x; scanf(" %d"&x);
        go(x);
    }
    ll ans = 0;
    for (ll i = 1; i < MAXN; i++) {
        if (arr[i] < 2continue;
        ans = max(ans, arr[i]*i);
    }
    printf("%lld\n", ans);
}
cs


'알고리즘 > BOJ' 카테고리의 다른 글

[백준] 10775 공항  (0) 2018.07.04
[백준] 9519 졸려  (0) 2018.07.03
[백준] 1184 귀농  (2) 2018.07.03
[백준] 3042 트리플렛  (0) 2018.07.02
[백준] 14528 Bovine Genomics (Silver)  (0) 2018.07.02
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함