본문으로 바로가기

A를 오름차순으로 하고 B를 내림차순으로 하여 가장 큰 값과 가장 작은 값이 곱해지도록 합을 구한다.

#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;

vector<int> v1, v2;
int n, k;

int main() {
  scanf("%d", &n);

  v1.resize(n);
  v2.resize(n);

  for (int i=0; i<n; i++) {
    scanf("%d", &v1[i]);
  }

  for (int i=0; i<n; i++) {
    scanf("%d", &v2[i]);
  }

  sort(v1.begin(), v1.end());// A를 오름차순으로 정렬
  sort(v2.rbegin(), v2.rend());// B를 내림차순으로 정렬

  for (int i=0; i<n; i++) {
    k += v1[i]*v2[i];
  }// 가장 큰 것과 가장 작은 것을 곱해서 합산한다

  printf("%d\n", k);
  return 0;
}

'Programming > Baekjoon Online Judge' 카테고리의 다른 글

[BOJ] 1075: 나누기  (0) 2018.06.08
[BOJ] 1037: 약수  (0) 2018.06.08
[BOJ] 1026: 보물  (0) 2018.06.08
[BOJ] 1010: 다리 놓기  (0) 2018.06.05
[BOJ] 1005: ACM Craft  (0) 2018.06.05
[BOJ] 1004: 어린 왕자  (0) 2018.06.05

댓글을 달아 주세요