CF 277.5 B. BerSU Ball

来源:互联网 发布:淘宝宝贝描述上传图片 编辑:程序博客网 时间:2024/05/29 19:15
http://codeforces.com/contest/489/problem/B
B. BerSU Ball
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

The Berland State University is hosting a ballroom dance in celebration of its 100500-th anniversary! n boys and m girls are already busy rehearsing waltz, minuet, polonaise and quadrille moves.

We know that several boy&girl pairs are going to be invited to the ball. However, the partners' dancing skill in each pair must differ by at most one.

For each boy, we know his dancing skills. Similarly, for each girl we know her dancing skills. Write a code that can determine the largest possible number of pairs that can be formed from n boys and m girls.

Input

The first line contains an integer n (1?≤?n?≤?100) — the number of boys. The second line contains sequence a1,?a2,?...,?an (1?≤?ai?≤?100), where ai is the i-th boy's dancing skill.

Similarly, the third line contains an integer m (1?≤?m?≤?100) — the number of girls. The fourth line contains sequence b1,?b2,?...,?bm (1?≤?bj?≤?100), where bj is the j-th girl's dancing skill.

Output

Print a single number — the required maximum possible number of pairs.

Sample test(s)
input
4
1 4 6 2
5
5 1 5 7 9
output
3
input
4
1 2 3 4
4
10 11 12 13
output
0
input
5
1 1 1 1 1
3
1 2 3
output
2

题目大意就是求,两个序列的对应元素的差的绝对值<=1的有几个。(注意用过的不可以再用了)
解题思路:将两个序列排序,然后从头到尾找,每有一个符合条件就记录一次
代码如下

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<vector>
#include<cmath>
#include<stdlib.h>
#include<iomanip>
#include<list>
#include<deque>
#include<map>
#include <stdio.h>
#include <queue>
#include <stack>
#define maxn 10000+5
#define ull unsigned long long
#define ll long long
#define reP(i,n) for(i=1;i<=n;i++)
#define rep(i,n) for(i=0;i<n;i++)
#define cle(a) memset(a,0,sizeof(a))
#define mod 90001
#define PI 3.141592657
#define INF 1<<30
const ull inf = 1LL << 61;
const double eps=1e-5;

using namespace std;

bool cmp(int a,int b){
return a>b;
}
int a[102],b[102];
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n,m;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
cin>>m;
for(int j=0;j<m;j++)
cin>>b[j];
sort(a,a+n);
sort(b,b+m);
int cnt=0;
int t=0;
for(int i=0;i<n;i++)
{
for(int j=t;j<m;j++)
if(abs(a[i]-b[j])<=1){cnt++;t=j+1;break;}//用t记录当前查找到的位置
}
cout<<cnt<<endl;
return 0;
}



0 0
原创粉丝点击