-
459-B, *1300코드포스 2021. 7. 28. 15:34
Problem - 459B - Codeforces
codeforces.com
문제
- n(2≤n≤2⋅105)개의 b(1≤b≤109)가 주어진다
- bi, bj, i≠j 차이의 최대값을 구하고 그 값이 나올 수 있는 경우의 수를 구하라
풀이
bi의 최대값을 max, 최솟값을 min 이라고 하자
i) max=min
차이의 최대값이 나오는 경우의 수는 b의 값에 따라 개수를 세서 구한다.
(max value b number)×(min value b number)ii) max≠min
차이의 최대값이 나오는 경우의 수는
(n2)12345678910111213141516171819202122232425262728#include <bits/stdc++.h>#define endl "\n"using namespace std;int n;int maxval = 0;int minval = 1e9;map<int, long long> m;int main(){ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);cin >> n;int b;for(int i = 0; i < n; i++){cin >> b;if(b > maxval) maxval = b;if(b < minval) minval = b;m[b]++;}if(maxval != minval) cout << maxval - minval << ' ' << m[maxval]*m[minval] << endl;else cout << 0 << ' ' << (long long)n*(n-1)/2 << endl;return 0;}cs'코드포스' 카테고리의 다른 글
1547-D, *1300 (0) 2021.07.30 1553-B, *1300 (0) 2021.07.28 451-B, *1300 (0) 2021.07.28 189-A, *1300 (0) 2021.07.27 230-B, *1300 (0) 2021.07.27