2012年7月26日 星期四

ACM 972 Horizon Line

#include <stdio.h>

int main(void)
{
    double aVal[100], aLen[100], bVal[100], bLen[100];
    double h;
    int N, M, i, j;

    while (scanf("%d", &N) == 1) {
        for (i = 0; i < N; i++)
            scanf("%lf%lf", &aVal[i], &aLen[i]);
        scanf("%d", &M);
        for (i = 0; i < M; i++)
            scanf("%lf%lf", &bVal[i], &bLen[i]);

        i = j = 0;
        h = 10000000.0;
        while (i < N && j < M) {
            if (aVal[i] > bVal[j]) {
                if (aVal[i] < h)
                    h = aVal[i];
            }
            else if (aVal[i] < bVal[j]) {
                if (bVal[j] < h)
                    h = bVal[j];
            }
            else
                h = aVal[i];

            if (aLen[i] > bLen[j]) {
                aLen[i] -= bLen[j];
                j++;
            }
            else if (aLen[i] < bLen[j]) {
                bLen[j] -= aLen[i];
                i++;
            }
            else {
                i++;
                j++;
            }
        }

        printf("%.3f\n", h);
    }

    return 0;
}

沒有留言:

張貼留言