안녕하세요. 오늘은 최솟값을 만들 거예요.
https://www.acmicpc.net/problem/31473
A_i의 합, B_i의 합은 일정합니다.
그러므로 (a상수-b상수)의 절댓값이 최소이면 됩니다.
그런데 절댓값이므로 최솟값은 0이면 됩니다. 그래서 a=두번째 상수, b=첫번째 상수 이면 됩니다.
a,b가 범위를 넘지는 않냐고요? A랑 B 모두 값은 최대 100, 개수는 1000개이므로 많아봤자 10만입니다.
#include <iostream>
#define ll long long
using namespace std;
int main()
{
ios_base::sync_with_stdio(false); cin.tie(NULL);
ll N, i, a, b, suma = 0, sumb = 0;
cin >> N;
for (i = 0; i < N; i++)
{
cin >> a;
suma += a;
}
for (i = 0; i < N; i++)
{
cin >> b;
sumb += b;
}
cout << sumb << ' ' << suma;
}
감사합니다.