페이지

1727번: 커플 만들기

https://www.acmicpc.net/problem/1727


#include<stdio.h>
#include<algorithm>
#define MAX 1010
int n, m, N[MAX], M[MAX], d[MAX][MAX];
int abs(int i)
{
    if (i>0)
    {
        return i;
    }
    else
    {
        return -i;
    }
}
int main()
{
    int i, j;
    scanf("%d%d", &n, &m);
    for (i = 1; i <= n; i++)
    {
        scanf("%d", &N[i]);
    }
    for (i = 1; i <= m; i++)
    {
        scanf("%d", &M[i]);
    }
    std::sort(N + 1, N + 1 + n);
    std::sort(M + 1, M + 1 + m);
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= m; j++)
        {
            d[i][j] = d[i - 1][j - 1] + abs(N[i] - M[j]);
            if (i>j&&d[i][j]>d[i - 1][j])
            {
                d[i][j] = d[i - 1][j];
            }
            if (j>i&&d[i][j]>d[i][j - 1])
            {
                d[i][j] = d[i][j - 1];
            }
        }
    }
    printf("%d", d[n][m]);
    return 0;
}

댓글 없음 :

댓글 쓰기