码迷,mamicode.com
首页 > 其他好文 > 详细

Sicily 4313. Boys and Girls

时间:2015-03-30 09:18:35      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:sicily

4313. Boys and Girls

Constraints

Time Limit: 1 secs, Memory Limit: 256 MB

Description

There are boys and girls at a dance party. We have measured their heights. Each boy will only dance with a girl and each girl will only dance with a boy. Everyone will dance with at most one partner. Each boy either wants to dance with a girl who is taller than him or with a girl who is shorter than him. Analogously, each girl either wants to dance with a boy who is taller than her or with a boy who is shorter than her. Boys and girls who are equally tall never want to dance with each other. Respecting everyone’s wishes, determine the maximum number of dancing pairs that can be achieved.

Input

The first line contains an integer T (1<=T<=10), indicating the number of test cases.

Then, for each case, the first line contains the positive integer N (1<=N<=1000).

The second line contains N integers whose absolute values are between 1500 and 2500, inclusive. Their absolute values represent the height of each of the boys in millimetres. Positive height values indicate boys who want to dance with girls taller than themselves, while negative height values indicate boys who want to dance with girls shorter than themselves.

 

 

The third line contains N integers whose absolute values are between 1500 and 2500, inclusive. Their absolute values represent the height of each of the girls in millimetres. Positive height values indicate girls who want to dance with boys taller than themselves, while negative height values indicate girls who want to dance with boys shorter than themselves.

Output

One line for each case, print the maximum number of dancing pairs.

 

Sample Input

2 
1
-1800
1800 
2 
-1800 -2200
1900 1700

Sample Output

0
2

Problem Source

AcFast

#include <string.h>
#include <vector>
#include <queue>
#include <stdio.h>
#include <stack>
#include <math.h>
#include <algorithm>
using namespace std;

bool cmp(const int& a, const int& b) {
    return a > b;
}

int find_pairs(int f_l[], int f_h[], int length_f_l, int length_f_h) {
    int i = 0, j = 0, pairs = 0;
    
    while (i < length_f_l && j < length_f_h) {//注意这里,假如对方要找比他/她矮的,然后你的身高比他/她高,肯定你没戏了(别人已经是想找矮的人之中最高的了,而你又想找高的)
        if (-f_l[i] > f_h[j]) {
            pairs++;
            i++;
            j++;
        } else {
            j++;
        }
    }
    
    return pairs;
}

int main() {
    int b_find_l[1001], b_find_h[1001], g_find_l[1001], g_find_h[1001];
    int case_num, n, i, j, k, temp, length_b_l, length_b_h, length_g_l, length_g_h;
    
    scanf("%d", &case_num);
    while (case_num--) {
        scanf("%d", &n);
        for (i = 0, j = 0, k = 0; i < n; i++) {
            scanf("%d", &temp);
            if (temp > 0)
                b_find_h[j++] = temp;
            else
                b_find_l[k++] = temp;
        }
        
        sort(b_find_l, b_find_l + k);
        length_b_l = k;
        sort(b_find_h, b_find_h + j, cmp);
        length_b_h = j;
        
        for (i = 0, j = 0, k = 0; i < n; i++) {
            scanf("%d", &temp);
            if (temp > 0)
                g_find_h[j++] = temp;
            else
                g_find_l[k++] = temp;
        }
        
        sort(g_find_l, g_find_l + k);
        length_g_l = k;
        sort(g_find_h, g_find_h + j, cmp);
        length_g_h = j;
        
        printf("%d\n", find_pairs(b_find_l, g_find_h, length_b_l, length_g_h) + find_pairs(g_find_l, b_find_h, length_g_l, length_b_h));
    }
    return 0;
}                      


Sicily 4313. Boys and Girls

标签:sicily

原文地址:http://blog.csdn.net/u012925008/article/details/44739755

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!