Traffic

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)

Problem Description

Avin is observing the cars at a crossroads. He finds that there are n cars running in the east-west direction with the i-th car passing the intersection at time ai . There are another m cars running in the north-south direction with the i-th car passing the intersection at time bi . If two cars passing the intersections at the same time, a traffic crash occurs. In order to achieve world peace and harmony, all the cars running in the north-south direction wait the same amount of integral time so that no two cars bump. You are asked the minimum waiting time.

Input

The first line contains two integers n and m (1 ≤ n, m ≤ 1, 000). The second line contains n distinct integers ai (1 ≤ ai ≤ 1, 000). The third line contains m distinct integers bi (1 ≤ bi ≤ 1, 000).

Output

Print a non-negative integer denoting the minimum waiting time.

Sample Input

1 1
1
1
1 2
2
1 3

Sample Output

1
0

思路:

本题就是要将东西和南北的时间完全分开,让南北的等一定的时间然后开始行驶后无需等待也会相撞,所以就是将数据用数据存,然后找到一个cnt使得符合题意。

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int main() {
    int n, m, k;
    while (scanf("%d %d", &n, &m) != EOF) {
        int a[10100] = {0}, b[10010] = {0};
        int maxn = 0;
        for (int i = 0; i < n; i++) {
            scanf("%d", &k);
            a[k]++;
            maxn = max(maxn, k);
        }
        for (int i = 0; i < m; i++) {
            scanf("%d", &k);
            b[k]++;
            maxn = max(maxn, k);
        }
        int cnt = 0;
        while (1) {
            int ans = 0;
            while (ans <= maxn) {
                if (!b[ans] || !a[ans + cnt]) ans++;
                else break;
            }
            if (ans == maxn + 1) {
                printf("%d\n", cnt);
                break;
            }
            cnt++;
        }
    }
    return 0;
}