본문 바로가기
IT/BOJ

백준(BOJ) 1727 커플 만들기 **

by 빨강자몽 2018. 6. 1.

어렵지 않은 DP 문제

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <math.h>
#include <queue>
#include <set>
#include <list>
#include <utility>
#include <functional>
#define MAX 1005
#define INF 987654321
#define MOD 1000000
#pragma warning(disable:4996)
using namespace std;
typedef long long ll;
typedef pair<int, int> pi;

int a, b;
int m[MAX], w[MAX], dp[MAX][MAX];

int main()
{
	scanf("%d %d", &a, &b);
	for (int i = 1; i <= a; i++)
		scanf("%d", &m[i]);
	for (int i = 1; i <= b; i++)
		scanf("%d", &w[i]);
	sort(m + 1, m + 1 + a), sort(w + 1, w + 1 + b);
	if (a > b)
		swap(a, b), swap(m, w);
	for (int i = 1; i <= a; i++)
		for (int k = i; k <= b; k++)
		{
			int tmp = abs(m[i] - w[k]);
			//printf("<%d>", tmp);
			if (k == i)
				dp[i][k] = tmp + dp[i - 1][k - 1];
			else
				dp[i][k] = min(dp[i][k - 1], (dp[i - 1][k - 1] + tmp));
		}
	printf("%d", dp[a][b]);
	return 0;
}


'IT > BOJ' 카테고리의 다른 글

백준(BOJ) 2294 동전 2 **  (0) 2018.06.01
백준(BOJ) 2159 케익 배달 **  (0) 2018.06.01
백준(BOJ) 2342 DDR **  (0) 2018.06.01
백준(BOJ) 11062 카드게임 ***  (0) 2018.06.01
백준(BOJ) 2932 표회전 *  (0) 2018.06.01